Pergunta

Eu tenho provavelmente o que é um problema simples, mas não há erros ou avisos informativos durante a compilação para me alertar sobre o que está dando errado.

Eu tenho um aplicativo Objective-C ++ que inclui arquivos de cabeçalho principal do C ++ e OBJC.

Ele constrói bem, mas quando executado, fornece esta mensagem de erro:

Dyld Error Message:
  Symbol not found: _OBJC_CLASS_$_AppController
  Referenced from: /Users/slate/Documents/osirixplugins/eqOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix
  Expected in: flat namespace
 in /Users/slate/Documents/osirixplugins/eqOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix

Nenhuma quantidade de Google resultou em uma solução e tenho certeza de que acabei de perder uma opção de compilação ou construção em algum lugar.

"AppController.h" está incluído no alvo (verificado) e #import'D no arquivo da classe OBJC.

Qualquer ajuda é muito apreciada.

OBJC ++ constantemente me dá dor de cabeça.

Obrigado,

-S!

Foi útil?

Solução

Claramente, falta a classe AppController. A classe AppController está definida em uma estrutura de biblioteca dinâmica? Se sim, quando você executa o aplicativo, ele sabe onde encontrar as bibliotecas/estruturas?

A propósito, esta é uma questão de vinculador. Os arquivos de cabeçalho são irrelevantes. São os arquivos .m ou .mm que você precisa olhar.

Outras dicas

Não tenho certeza se esse é o seu problema, mas eu estava tendo um problema semelhante com uma DLL C ++, o que me levou o dia todo para depurar. Não programei em C ++ há cerca de 15 anos e, enquanto tentava escrever uma função virtual pura, usei a sintaxe familiar "virtual void f ();" - Oops. Em C ++, deve ser "Void virtual f () == 0;" A versão mais recente do GCC no Mac OSX 10.9.2 compila feliz o código.

Eu acho que é uma declaração para a frente perfeitamente legal ... no entanto, não tenho certeza se o C ++ permite que as classes abranjam vários arquivos, por isso parece que isso deve ser sinalizado (pois nenhuma implementação é fornecida no arquivo CXX.) Em qualquer caso, o O símbolo entra no código do objeto, e o vinculador nunca reclama, então você acaba com a referência ausente. Espero que isso ajude alguém.

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