J'ai construit une bibliothèque statique, à être liée dans mes applications iPhone. Cette bibliothèque utilise certaines variables et fonctions globales, comme dans C. Mon problème est, lorsque vous utilisez par exemple:variables externes dans la bibliothèque statique, en utilisant Objective-C
extern
void do_stuff (const int a)
{
return a*a;
}
extern const int a_variable;
extern const int an_array[DEFINED_VALUE];
Lorsque j'utilise cette fonction, ou accéder à ces variables, partout dans mon code, le compilateur me dit
"_do_stuff" référencé à partir de: - [objet testMethod] dans tests.o
"_a_variable" référencé à partir de: - [objet testMethod] dans tests.o
"_an_array" référencé à partir de: - [objet testMethod] dans tests.o
Symbole (s) non trouvé collect2: Id retourné 1 état de sortie
Quelqu'un at-il jamais fait face à ce problème avant? Je sais que je fais quelque chose de stupide, il me manque un concept clé en Objective-C ou C, mais je ne vois pas vraiment quoi. Donc j'espérais que quelqu'un pourrait m'aider. Merci d'avance.
J'ai essayé avec la bibliothèque liée à l'application cible, puis essayé avec l'application cible en fonction de la cible de la bibliothèque. Les deux produisent la même erreur. En ce qui concerne le point declare/define, j'ai en fait les valeurs et les corps de fonctions définis dans un fichier .mm, je viens de donner un exemple par souci de simplicité. Évidemment, les variables ne sont pas nommées a_variable, je ne peux simplement pas afficher mon code en raison d'un contrat sigil. –
@ Ricardo OK, c'est un peu bizarre. Vérifiez que la bibliothèque ('blah.a') apparaît réellement dans la phase" Link Binary With Libraries "de la cible de votre application. Vérifiez également que la bibliothèque exporte réellement les symboles requis. Si les deux sont vraies alors je suis perplexe ... – walkytalky
Maintenant que vous le dites, peut-être qu'il n'exporte pas les symboles que je veux globalement. Mais comment puis-je être sûr de cela? –