Importei o framework para enviar email do aplicativo em segundo plano, ou seja, SKPSMTPMessage
Framework. Alguém pode sugerir por que o erro abaixo é mostrado
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
objc-class-ref in ConfirmController.o
"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
"_kSKPSMTPPartMessageKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
"_kSKPSMTPPartContentTypeKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Fonte da qual o quadro é retirado: -
Bloqueando os campos no MFMailComposeViewController
Atualização :
Resposta: Basta arrastar e soltar a pasta sobre o projeto e clicar em copiar. É isso também marque a caixa de seleção do projeto e a caixa de seleção de destino.
Respostas:
Você pode obter esse tipo de erro se o arquivo .m da sua classe não estiver listado na etapa "Compilar fontes" da guia "Construir fases" do seu destino. Normalmente, o Xcode faz isso por você, mas às vezes perde a plotagem e você precisa adicionar o arquivo .m manualmente.
Para fazer isso:
TargetSettings -> Fases de compilação -> Fontes de compilação -> adicione sua classe .m -> Compilar e executar
fonte
-lLibraryName_$(PLATFORM_NAME)d
para depuração e adicionar-lLibraryName_$(PLATFORM_NAME)
para versão #para mim, o problema acabou faltando estruturas. Depois que os adicionei, funcionou.
fonte
Verifique as propriedades Somente arquiteturas válidas e Construir arquitetura ativa.
fonte
se você estiver usando cocoapods, verifique se as configurações de compilação do seu destino contêm $ (herdadas) na outra seção de sinalizadores do vinculador
fonte
Sua estrutura é compilada para o armv (x)? Parece-me que foi compilado para o i386, cujo código não será executado em um dispositivo iOS. Ou então é compilado para o armv (x) e você está tentando executá-lo no simulador, que é o código i386. Certifique-se de que, usando as configurações de compilação Akshay exibidas acima, sua estrutura seja compilada corretamente para o chip em que você executará.
fonte
Se você estiver importando algum outro projeto no xcode e se o projeto atual e o de importação tiverem os mesmos arquivos na origem do Compiler, remova o mesmo arquivo no projeto atual nas configurações de "Fase de construção". Funcionou para mim.
fonte
Sim, isso está relacionado ao que Allen disse ... procure a TargetMembership na seção Utilitários do arquivo de origem. existe uma caixa de seleção que associa esse arquivo a um projeto. Verificar isso também resolveu esse problema para mim.
fonte
Também pode estar faltando um link para uma Biblioteca Binária, marque Fases de Construção em suas Targes, adicione as bibliotecas necessárias e, em seguida, Produto> Produto Limpo> Construção
Isso deve funcionar também!
fonte
Eu tive esse problema quando abri o mesmo projeto duas vezes, apenas um projeto era o original e o outro foi clonado a partir de um URL do git.
'Produto'> 'Limpo' resolveu o problema.
fonte
Também resolvi esse problema e o corrigi, verificando se o código-fonte de compilação e o binário de link com a biblioteca continham todo o arquivo / biblioteca / estrutura necessária.
fonte
Quando encontrei o mesmo problema que este:
Acabou que eu esqueci de adicionar framework. Era QuartzCore.framework para ser exato.
fonte
tente este último:
então tentei todas as sugestões desta página .. nenhuma funcionou .. A maneira como meu problema começou foi seguindo as etapas deste tutorial que ensinam como vincular bibliotecas estáticas. Com o meu projeto de amostra, as instruções funcionaram bem ... mas, no meu projeto atual, comecei a receber o erro acima.
Então, o que eu fiz foi passar por cada etapa do referido tutorial e criar após cada etapa. A linha incorreta acabou sendo a seguinte: adicionando -all_load para criar configurações-> outros sinalizadores de vinculador
Acontece que esse sinalizador foi recomendado uma vez para vincular categorias a bibliotecas estáticas .. mas, em seguida, verificou - se que esse sinalizador não era mais necessário Xcode 4.2+ .. (o mesmo vale para o sinalizador -force_load .. que também foi recomendado em outros posts ) ..
fonte
Quando encontrei o mesmo problema, esqueci de adicionar "versão compilada da biblioteca (com extensão .a)". Normalmente, adicionamos a biblioteca do projeto importado na Dependência de Destino nas Fases de Construção, mas esquecemos de adicionar a "biblioteca compilada" no Link Binary com as Bibliotecas nas Fases de Construção.
fonte
Adicionando o que funcionou para mim caso outras pessoas tenham o mesmo problema e acabem aqui. Eu tinha um projeto mais antigo que tinha a configuração CLANG_ENABLE_MODULES definida como Não. Após horas de frustração, comparei-me a um projeto em funcionamento e descobri que havia Enable Modules Set como no nas configurações de compilação do LLVM. Definir isso como Sim resolveu meu problema e o aplicativo é bom.
Configurações do projeto -> Configurações da compilação -> procure por 'Módulos' e Atualize os módulos de habilitação (C e Objective-C) para SIM.
fonte
Não adicionei o "-all_load -lstdc ++" a outros sinalizadores de vinculador na configuração de compilação e consegui iniciar o sim sem erros, mas não obtive a saída do log do MonkeyTalk quando iniciada e o script anterior que escrevi para conectar agora mostrou o botão play como desativado. A saída do MT IDE foi exibida como "Conexão definida para o iOS Simulator", mas não é possível selecionar o botão executar / reproduzir.
O projeto original tinha "ObjC -all_load" nos outros sinalizadores do vinculador e quando anexei o "-all_load -lstdc ++" junto com ele, recebi a mensagem de erro sobre este post. Quando removi o "ObjC -all_load" e adicionei apenas o "-all_load -lstdc ++" que o projeto construiu, mas ainda assim nenhum logout de conversa de macaco foi colocado como confirmação no console
fonte
É possível que você esteja usando uma biblioteca que é compilada apenas para hardware REAL. Por exemplo, se você estiver usando uma biblioteca Bluetooth como o Zephyr HxM Smart, ela provavelmente não será compilada no simulador e deve ser executada apenas em dispositivos reais.
fonte
Ocorreu um problema semelhante no IOS 6. Foi possível resolvê-lo adicionando storekit.framework ao "Link Binary with Libraries" na seção de fases da construção.
Agora isso trabalha como charme.
fonte
Eu tenho o mesmo problema com 7 erros quando adiciono o PSTCollectionviewcontroller. A única solução para esse problema é verificar seu "xcode -> fases de compilação -> compilar fontes" aqui, adicionar todos os seus arquivos ".m". post ajudará os usuários no futuro.
fonte
No meu, eu estava usando o Cocoapods para um projeto de Realidade Aumentada e o que descobri foi que, quando você implementa o cocoapods e abre o espaço de trabalho do seu projeto, você acaba com o destino do Xcode Project e os Pods que você implementou no mesmo arquivo. O que estava acontecendo era que alguns dos .m estavam sendo usados por ambos. Depois de remover os duplicados para o destino do Xcode em Build Phases >> Compile Sources, funcionou bem.
fonte
Descobri esta mensagem ALTAMENTE enganosa ao tentar atualizar para a nova biblioteca do Google Analytics.
No meu caso, o problema era ter DUAS CÓPIAS EM CONFLITO da biblioteca. Eles estavam em pastas diferentes, mas ambos foram listados nos Caminhos de Construção da Biblioteca do meu aplicativo (em Configurações de Construção).
Mover todos os arquivos obsoletos da biblioteca da pasta acabou fazendo o truque e fez com que as mensagens de erro misteriosas desaparecessem.
fonte
Verifique se todos os seus recursos do pacote configurável foram copiados na fase de construção.
fonte
Produto => Clean fez o truque para mim
fonte
A mudança na arquitetura ativa funcionou para mim. Uma das minhas bibliotecas estava usando o i386.
Nas configurações de compilação >> altere Construir somente arquitetura ativa para Sim de NÃO
Funcionou para mim. Espero que ajude os outros também.
fonte
A resposta é apenas arrastar e soltar a pasta sobre o projeto e clicar em copiar.
fonte
Recebi essa mensagem ao arrastar e soltar alguns arquivos de origem de outro projeto. Quando os apaguei e os adicionei através do "Add Files ..." no menu File, ele foi criado sem o erro.
fonte
Eu tive um erro semelhante com o NSManagedObject e foi porque eu estava usando o Core Data, mas estava faltando a estrutura do Core Data em Build Phases - Link Binary With Libraries, como alguns outros responderam
fonte
Você pode obter esse tipo de erro se adicionar bibliotecas de terceiros ao seu projeto que exijam estruturas nativas não incluídas no seu projeto.
Você precisa procurar dentro dos arquivos. Hem da sua biblioteca recém-adicionada, ver quais estruturas são necessárias e incluir essas estruturas no seu projeto (Destino> Fases de construção> Vincular binário com bibliotecas).
fonte
Tente remover a estrutura, limpar o projeto, adicioná-lo novamente e compilar. Ou Remova a classe que foi adicionada pelo xcode na fonte de compilação, limpe o projeto, adicione-a novamente e depois construa.
fonte
Lembre-se de que você pode colocar alguma macro em qualquer controlador de exibição que esteja chamando os arquivos que você já excluiu.
O aplicativo não mostrará nenhum erro até você criar o aplicativo, lançará o erro na fase de compilação nos arquivos .o.
Lembre-se de excluir qualquer MACRO que esteja chamando os arquivos que você já excluiu.
Obrigado :)
fonte
Além do que Allan fez, adicionando classes ausentes, segui a solução do @ emdog4 e adicionei a biblioteca Core Data indo para Build Fhases no Xcode e sob o 'Link Binary with Libraries' clicando no + e selecionando 'CoreData.framework' . Isso resolveu meu erro
fonte