Pergunta

Eu já passei inúmeras horas intrigando sobre isso, utilizando pesquisas no Google e outras perguntas sobre o pilhas sem sucesso.

Eu tenho um aplicativo universal para iPhone/iPad, que parece compilar bem quando o destino é o ARMV6. No entanto, quando o dispositivo é iPad, recebo este aviso:

warning: building for SDK 'Device - iPhone OS 3.2' requires an armv7 architecture.

Curiosamente, o aplicativo ainda funciona muito bem no iPad, apesar desse aviso. No entanto, eu quero fazer as coisas da "maneira correta" o que isso significa neste caso. Quando eu troco a arquitetura de destino para o ARMV7, recebo erros de vinculação:

  "___restore_vfp_d8_d15_regs", referenced from:
     *redacted*

  "___save_vfp_d8_d15_regs", referenced from: 
     *redacted*

ld: symbol(s) not found

collect2: ld returned 1 exit status

As partes "redigidas" dos erros são referências à biblioteca estática à qual estou tentando vincular.

Aqui está o que eu tentei das muitas sugestões online. Cada um deles foi sugerido mais de uma vez sem nenhuma explicação, o que me leva a acreditar que ninguém entende esse problema:

"Nunca use o menu suspenso no canto superior esquerdo da janela Xcode para escolher o destino. Em vez disso, defina -o como baseado no SDK e, em seguida, o SDK base no iPhone OS 3.0 na configuração de destino. Defina o dispositivo de destino como seu destino preferido ( iPad, iPhone OS 3.2 na minha situação.) "

Isso produz o erro "Library não encontrado para -lcrt1.3.1.o"

"Certifique -se de que o GCC não esteja vinculando contra a versão errada da biblioteca padrão. (Você terá que garantir que a biblioteca_search_path não tenha o caminho errado.)" "

Minha biblioteca_search_path já está vazia, então isso não parece relevante.

"Tente compilar com o GCC 4.0 em vez do GCC 4.2."

Recebo um erro de sintaxe dentro de um arquivo de cabeçalho do UIKIT. O erro é "erro de sintaxe antes de 'at_name' token". A linha é "uikit_extern @interface uilocalizedIndexedCollation: nsObject".

Outro projeto compila muito bem com o mesmos configurações de destino, O que está realmente me fazendo questionar minha sanidade. Eu poderia estar lidando com um projeto Xcode corrupto?

Se alguém souber o que realmente está acontecendo e tem uma referência ou não se importa de explicá -lo, eu ficaria muito grato.

Felicidades!

Foi útil?

Solução

O VFP entre o ARMV7 e o ARMV6 difere de várias maneiras. No ARMV7, geralmente é preferível usar néon. O problema é que sua biblioteca estática depende do VFP no ARMV6 - você precisa compilar a biblioteca no ARMV7 ou manter todo o aplicativo no ARMV6.

Voltar ao GCC 4.0 é bobo - o suporte do ARMV7 era basicamente inexistente naquela época, a menos que a Apple o tivesse apoiado.

Outras dicas

Eu tinha os mesmos erros, exceto que era para o ARMV6. Eu os corrigi desmarcando "Compile for Thumb" nas configurações do projeto para a biblioteca estática e o projeto principal.

No que diz respeito ao erro AT_Name, uma das possibilidades é verificar se você perder o @END em uma classe.

Para saber mais sobre o erro at_name, visite o seguinte link

http://iosdevelotips.com/xcode/error-syntox-error-wefore-at_name-token.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top