Agora tenho a mesma pergunta com o título acima, mas ainda não encontrei a resposta certa. Eu recebi o erro:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Qualquer ajuda é apreciada.
Finalmente , descubro o motivo desse erro, porque adicionei -ObjC
ao Other Linker Flags
. Depois de remover esse valor, posso construir meu projeto com êxito, mas não sei por quê. Alguém pode explicar isso?
ios
objective-c
xcode5
lee
fonte
fonte
#include
'd ou#import
' d alguma coisa (provavelmente o MoboSDK, qualquer que seja) mais de uma vez.GoogleConversionTrackingSDK-iOS-3.0
ao meu projeto. Antes disso, está funcionando. Eu também tentei removê-lo, mas o erro ainda ocorre.Respostas:
Significa que você carregou as mesmas funções duas vezes. Como a questão desaparecem após a remoção
-ObjC
daOther Linker Flags,
Isso significa que esse resultado opção que funciona cargas duas vezes:de Perguntas e Respostas Técnicas
https://developer.apple.com/library/content/qa/qa1490/_index.html
fonte
-ObjC
flag. Portanto, preciso manter esse sinalizador nas configurações do meu projeto. Então, você poderia sugerir outra solução?Para mim, alterar 'Não blocos comuns' de Sim para Não (em Destinos -> Configurações de compilação -> Apple LLVM - Geração de código) corrigiu o problema.
fonte
NO
? Qual a razão por trás disso?Estúpido, mas certifique-se de não ter
#import
editado um.m
arquivo por engano em algum lugarfonte
No meu caso, eu apenas criei um arquivo de cabeçalho para definir cadeias constantes como esta:
Eu resolvi esse cenário usando
static
:fonte
extern
em vez destatic
:extern NSString * const kNotificationName;
. O que é estranho, porque você normalmente não adicionou esse prefixo, e funcionou bem .. #AppStrings.h
forem constantes; no entanto, causará estragos se você desejar uma variável mutável global, pois todo arquivo de origem que inclui o arquivo de cabeçalho terá sua própria cópia da variável. É uma péssima solução.Achei que a resposta aceita toca no problema, mas não me ajudou a resolvê-lo, espero que esta resposta ajude com esse problema muito frustrante.
"Significa que você carregou as mesmas funções duas vezes. Como o problema desaparece após a remoção de -ObjC de outros sinalizadores de vinculador, isso significa que esta opção resulta em funções carregadas duas vezes:"
Em termos leigos, isso significa que temos dois arquivos em nosso projeto com exatamente o mesmo nome. Talvez você esteja combinando um projeto em outro? Dê uma olhada nos erros acima do erro "símbolos duplicados" para ver qual pasta está duplicada, no meu caso era BLoginViewController.
Por exemplo, na imagem abaixo, você pode ver que eu tenho dois BImageViewControllers, para mim, isso é o que estava causando o problema.
Assim que eu apaguei um, o problema desapareceu :)
fonte
Eu tenho o mesmo problema. No Xcode 7.2, no caminho Destino do Projeto> Configuração de Construção> Sem Blocos Comuns, eu o altero para NÃO.
fonte
Também acontece quando você declara variáveis const com o mesmo nome em uma classe diferente:
no arquivo Message.m
no arquivo Chat.m
fonte
Isso ocorreu quando aceitei o pop-up "configurações recomendadas" em um projeto que desenvolvi há dois anos no Objective-C.
O problema era que, quando você aceitou a atualização "configurações recomendadas", o Xcode mudou ou adicionou automaticamente algumas configurações de compilação, incluindo
GCC_NO_COMMON_BLOCKS = YES;
.Isso fez a compilação falhar com o
duplicate symbol
erro no meu projeto atualizado. Então mudeiNo Common Block
paraNO
nas minhas configurações de compilação e o erro desapareceu.fonte
A maneira mais rápida de encontrar a duplicata é:
fonte
As etapas a seguir resolveram o problema para mim.
fonte
Remova -ObjC de outros sinalizadores de vinculador ou verifique se importou qualquer arquivo .m em vez de .h por engano.
fonte
.m"
, percebi que importei o arquivo .m em vez de. He depois de consertar isso funcionou!Talk is cheap, show me the code!
Felicidades!Minha situação com algum projeto legado aberto no Xcode 7.3 foi:
seguido da lista de dois arquivos não relacionados.o, depois isso foi repetido algumas vezes e finalmente:
O que resolveu isso para mim foi alterar a declaração de enum de:
para isso:
Se alguém tiver uma explicação para isso, por favor, me esclareça.
fonte
Definir a mesma variável em @implementation em mais de uma classe também pode causar esse problema.
fonte
No meu caso, havia dois arquivos com o mesmo nome no local
fonte
Funcionou para mim
fonte
Eu experimentei esse problema depois de instalar o Cocoapods. Agora acontece toda vez que eu atualizo alguns pods. Solução que encontrei:
Vá para o terminal:
Além disso, verifique o item "Sempre incorporar bibliotecas Swift" nas configurações de compilação. Ele deve estar "desbotado" indicando que está usando a configuração padrão. Se estiver definido como SIM manual, pressione Excluir sobre ele para reverter para a configuração padrão. Isso interrompeu o comportamento.
fonte
Para mim, durante as configurações recomendadas do Xcode8, atualize "No Common Blocks" para YES, o que causa esse problema.
fonte
Hoje, eu recebi o mesmo erro. A palavra-chave do erro é
duplicate
. Eu o corrigo:fonte
Certifique-se de não ter importado um arquivo .m por acidente. Você pode excluir os dados derivados na Janela Projetos e criar e executar novamente.
fonte
Para qualquer outra pessoa que esteja tendo esse problema, não vi minha resolução em nenhuma dessas respostas.
Após um conflito de mesclagem .pbxproj que foi tratado manualmente (embora de maneira inadequada), houve referências duplicadas a arquivos de classe individuais no .pbxproj. A exclusão das do Projeto> Fases de construção> Fontes de compilação corrigiu tudo para mim.
Espero que isso ajude alguém abaixo da linha.
fonte
ld: X duplicate symbols for architecture x86_64
. Corrigido, removendo os arquivos de origem mencionados na mensagem de erro e os adicionando novamente ao projeto.Semelhante ao Juice007, eu havia declarado e inicializado uma variável do tipo C em dois arquivos .m diferentes (que não foram importados!)
no entanto, esse método de declarar e inicializar uma variável, mesmo em .m, mesmo na implementação implementa o escopo global. Suas opções são:
Declare-o como estático, para limitar o escopo à classe:
Remova a inicialização (que fará com que as duas classes compartilhem a var global):
Declare-o como uma propriedade:
Declare-o como um iVar adequado na interface @
fonte
No meu caso, eu tinha dois
main()
métodos definidos no meu projeto e a remoção de um resolveu o problema.fonte
Recentemente, tive uma dor de cabeça procurando a fonte de um erro. Fiquei imaginando, quando descobri que meu aplicativo não deseja compilar, simplesmente porque eu tinha o seguinte trecho de código em diferentes classes:
Espero que ajude alguém.
fonte
Espero que definitivamente ajude você
Eu tenho o mesmo erro 3 símbolos duplicados para arquitetura x86_64
no meu caso, copiei o código de outro arquivo do mesmo projeto, por exemplo. código do arquivo Am para Bm e após a compilação, recebi um erro como menção. e eu resolvi o erro alterando o nome da variável global.
esse erro ocorreu no meu caso por causa do mesmo declarar para variável global em ambos os arquivos.
fonte
Eu recebi o mesmo erro quando adicionei um repositório de pod
para um código-fonte já adicionado (SWRevealViewController) do gitHub. Portanto, o erro será corrigido removendo o código-fonte ou o repositório de pod.
Caso 2:
Na segunda vez, esse erro apareceu quando declaro uma constante no arquivo .h .
fonte
As respostas acima não funcionaram para mim. Aqui está como eu me livrei disso:
1) no localizador, exclua toda a pasta Pods e o arquivo Podfile.lock 2) feche o projeto xcode 3) execute a instalação do pod no terminal 4) abra o projeto xcode, execute o comando clean build
Trabalhou para mim depois disso.
fonte
O mesmo problema aconteceu comigo quando eu estava integrando o projeto lob dentro do meu projeto.
Na verdade, o projeto lob também possui os arquivos AFNetworking, então eu removo os arquivos .m do projeto lob.
Na verdade, os arquivos .m estão em conflito com os arquivos POd / AFNetworking / .m do My project
fonte
No Xcode 6.3.2. Eu verifiquei todas as possibilidades como abaixo
1: Não importei o arquivo .m no meu projeto.
2: Removido
-ObjC
de outro sinalizador de vinculador .3: Removidos todos os meus dados derivados .
Ainda estou recebendo o mesmo erro. Eu removi esse erro removendo qualquer declaração de variável do
.pch
arquivo . no meu caso, declarei oAppDelegate
objeto no.pch
arquivo. finalmente encontrei uma razão que causa erro. removo a declaração de qualquer variável do arquivo .pch e o charme do meu projeto.fonte
Outro erro bobo que causará esse erro são os arquivos repetidos. Eu acidentalmente copiei alguns arquivos duas vezes. Primeiro, fui para Destinos -> Construir Fases -> Compilar fontes. Lá notei alguns arquivos nessa lista duas vezes e seus locais.
fonte
Se o problema
.m
persistir, por favor, marque como resposta, caso a sua dúvida.m
não tenha sido solucionada, por favor, poste novamente. E minha solução é adicionar uma palavra-chave "static
" antes do valor const.such como:E então eu construo o projeto, ele não reportará esse erro.
fonte