Quando tento executar meu projeto Xcode, ele falha com um erro informando que tenho símbolos duplicados. Procurei online onde encontro essas duplicatas, mas não tive sorte:
Alguma ideia de como consertar isso?
ios
objective-c
xcode
linker-errors
Picciano
fonte
fonte
Respostas:
Pelos erros, parece que o FacebookSDK.framework já inclui as classes Bolts.framework. Tente remover o Bolts.framework adicional do projeto.
fonte
Para mim, ajudou a mudar a configuração do compilador "Sem blocos comuns" para NÃO: Parece fazer sentido, a configuração é explicada aqui: Para que é usado GCC_NO_COMMON_BLOCKS?
fonte
Usando o Xcode 8, a opção "Atualizar projeto para as configurações recomendadas" ativou 'Sem blocos comuns' para meu projeto.
Desligar novamente consertou tudo.
fonte
Para mim foi porque importei um arquivo como .m não como .h por engano
fonte
Eu baguncei meus pods ao fazer o downgrade de um pod e consegui resolver o problema com símbolos duplicados para a arquitetura arm64 removendo os pods e instalando-os novamente com:
fonte
Outra solução é:
Em seguida, você verá 1 ou 2 arquivos no resultado da pesquisa.
Remova um deles e compile novamente . Ele deve recompilar agora porque há apenas um arquivo restante e não há mais conflitos para compilar.
Se isso não funcionar, o arquivo provavelmente contém erros e você deve remover todos eles e recompilar. Deve funcionar novamente.
fonte
Ao atualizar para o Xcode 8, recebi uma mensagem solicitando a atualização para as configurações recomendadas. Aceitei e tudo foi atualizado. Comecei a ter problema de tempo de compilação:
Símbolo duplicado para XXXX Símbolo duplicado para XXXX Símbolo duplicado para XXXX
Um total de 143 erros. Acessou Target-> Build settings -> No Common Blocks -> Set it to NO. Isso resolveu o problema. O problema era que os projetos integrados tinham blocos de código em comum e, portanto, não eram capazes de compilá-los. A explicação pode ser encontrada aqui .
fonte
Este erro ocorre quando o Linker está tentando vincular os arquivos obj. Alguns motivos que eu poderia pensar para esse erro são:
A Função / Classe duplicada é definida em dois locais / arquivos diferentes no projeto e apenas um deles deveria compilar para qualquer variação do comando de construção. Mas, de alguma forma, ambos os arquivos foram compilados em seu projeto. Portanto, você precisa verificar suas condições if-else ou outras dependências que adicionam arquivos src à lista de arquivos que precisam ser compilados e remove o arquivo desnecessário para seu comando de construção específico.
A Função / Classe duplicada é definida acidentalmente em dois locais / arquivos diferentes no projeto. Remova a definição errada.
Limpe seu diretório OBJ antes de construir novamente, pode haver alguns arquivos obj antigos de suas compilações anteriores que podem estar causando este conflito.
PS Não sou especialista, mas foi assim que resolvi esse problema quando o enfrentei. :)
fonte
Se você está mudando para o Xcode 7 ou 8 e está abrindo um projeto muito antigo, encontrei este problema:
no
SomeConstFile.h
no
SomeConstFile.m
As versões anteriores do compilador presumiam que a definição no arquivo de cabeçalho era externa e, portanto, incluir SomeConstFile.h em todo o lugar era adequado.
Agora você precisa declarar explicitamente essas consts como externas:
no
SomeConstFile.h
fonte
O Patch abaixo funciona para mim .. :)
Definir de volta para NÃO resolveu o problema!
fonte
Bem, algumas vezes ao usar SDK como FB ou Bibliotecas como Vuforia ou GoogleAnalytics, adicionar exemplos de projetos pode causar o problema de já estarem incluindo Frameworks e assim por diante, então você deve ter certeza de não repetir símbolos adicionados manualmente enquanto eles já estão incluído nas amostras
fonte
Para mim, o problema era o estilo de criação de const, que funcionava bem até este iOS8 .. eu tinha algumas linhas como:
no meu arquivo .h. Seis linhas como resultaram em 636 arquivos de linker depois que os blocos comuns foram definidos como NÃO. (14k + se SIM). Mover as linhas para .m após retirar .h da declaração de valor e a compilação estava pronta para prosseguir.
Espero que isso ajude outras pessoas!
fonte
No meu caso, a razão era muito estúpida:
Eu tinha um arquivo Constant.h onde tinha macros definidas. Pensei em fazer NSString lá. e fez isso:
isso causou o problema de símbolos duplicados para arquitetura arm64 e o comando Linker falhou com o código de saída 1. A remoção da linha Const NSString funcionou para mim.
fonte
verifique seu arquivo de inclusão, tive esse problema porque acidentalmente #importei "filename.m" em vez de "filename.h", autocorreção (guia) colocou um "m" e não "h".
fonte
A partir dos erros, pareceria que todas as Classes aparecem várias vezes. Encontre e removidas as Classes que estarão funcionando.
Estou criando arquivos AppDelegate.h e .m criando várias vezes. Portanto, esse erro ocorrerá. Finalmente localizei e removi essas classes que estão funcionando bem para mim.
fonte
para resolver este problema vá para as fases de construção e pesquise sobre o arquivo duplicado como (facebookSDK, unidadeads) e exclua (extensão arquivo.o) e depois crie novamente.
fonte
Para mim, criei um método chamado
sampleMethod
em ViewController_A e também criei o mesmo método em ViewController_B. Isso me causou esse erro, então mudei o nome do método em ViewController_B parasecondSampleMethod
. Ele corrigiu o erro.Parece um bom recurso para reduzir o código e não duplicar o mesmo código em muitos lugares.
Tentei alterar os blocos Não Comuns de Sim para Não e ativar a testabilidade de Sim para Não. Não funcionou. I Verifiquei os arquivos duplicados também nas fases de construção, mas não há arquivos duplicados.
fonte
Tive esse problema porque estava definindo preguiçosamente uma variável em meu .m fora de um método, então em outro arquivo .m eu estava definindo outra variável com o mesmo nome fora de um método. Isso estava causando um problema de duplicação do nome da variável global.
fonte
O problema para mim é que incluí manualmente uma estrutura, mas também incluí essa mesma estrutura no CocoaPods sem saber que o fiz. Depois que removi um ou outro, o problema foi embora
fonte
Consulte Erro de símbolo duplicado ao adicionar subclasse NSManagedObject, link duplicado
fonte
Consegui resolver este erro que dizia "158 símbolos duplicados para a arquitetura armv7, 158 símbolos duplicados para a arquitetura arm64" --- Se é isso que você também está obtendo, significa que está tentando compilar um arquivo que está importando ou herdar uma estrutura ou biblioteca estática com referências a códigos ou arquivos C ++. Uma maneira fácil de lidar com isso seria alterar a extensão do arquivo .m para .mm. É assim que ele é tratado se você estiver usando Objective C, mas não tenho certeza no Swift.
Também nas configurações de compilação - você pode atualizar as "outras sinalizações de vinculador" para -lc ++
fonte
Se alguém está experimentando isso trabalhando no Flutter, não tente desintegrar pod, pod init.
Resolvi executar flutter clean, flutter run -d [dispositivo iOS]
Espero que possa ajudar alguém.
fonte
Plz Alterar configuração.
Etapa 1: Vá para TARGETS -> Build Settings -> No Common Blocks -> No
Etapa 2: Vá para TARGETS -> Build Settings -> enable testability -> No
fonte