J'ai une bibliothèque compilée dans un fichier .a, lié à mon application. (iphone, développement avec Xcode)lier mess avec libc
Tout semble bien se passer, la liaison semble réussir, mais quand je lance le programme, il plante. Le point de crash est à un appel de memcmp() dans la bibliothèque liée statiquement. Le débogueur montre toutes sortes de choses appelées avec "dyld" dans leurs noms, il semble donc que pour une raison quelconque, il ne peut pas résoudre memcmp, commence à chercher des bibliothèques dynamiques, puis échoue. AFAIK memcmp est en libc, cela ne devrait donc pas poser de problème. (essayé aussi en passant -lc à l'éditeur de liens, et cela n'a pas aidé, comme je m'y attendais)
Alors, comment cela est censé fonctionner? Pourquoi une bibliothèque statique ne peut-elle pas utiliser quoi que ce soit de libc? Comment dois-je le compiler?
Merci
La bibliothèque que vous avez liée à votre application est-elle celle que vous avez écrite vous-même? - Je ne peux m'empêcher de me douter qu'il utilise un pointeur non initialisé ou nul. Ou peut-être que vous n'utilisez pas la bibliothèque correctement, ce qui provoque le pointeur invalide? Que dit le backtrace? –
Non, c'est une bibliothèque largement utilisée, fonctionnant de manière fiable sur beaucoup de plates-formes, et elle échoue au tout début, avec une fonction d'initialisation. Le même extrait de code (en réalité 2 appels de fonction pour configurer les choses) Le backtrace pointe vers une fonction memcmp. (la bibliothèque a été compilée en mode debug) –