2011-11-09 8 views
1

J'ai écrit du code (bibliothèque statique) en C++, avec (je pense, C compatiblity - obtenu 'extern C' et ainsi de suite), et je voulais l'utiliser dans mon application CLiaison de la bibliothèque C++ statique dans la bibliothèque c

Quand im runing mon application C, je me suis erreur:

undefined symbol: _ZTISt9exception 
Code

C++ a été compilé avec gcc avec: -std=c++0x -lstdc++ drapeaux

puis, sur les fichiers OBJ i exécuter ar

je suppose ce symbole provient directement de la bibliothèque C++. Lorsque je compile mon application C, j'ajoute bien sûr ma librairie C++ dans mon makefile, et la compilation se termine sans erreur.

Qu'est-ce qui pourrait ne pas fonctionner?

thx pour toute l'aide

+0

duplication possible de [Utilisation de la bibliothèque C++ dans le code C] (http://stackoverflow.com/questions/199418/using-c-library-in-c-code) –

Répondre

1

Une bibliothèque statique n'est pas liée, elle est juste une collection de fichiers objets dans une archive. Tous les noms de fichiers comme libxxx.a sont des bibliothèques statiques, tandis que les fichiers nommés libyyy.so sont des bibliothèques dynamiques. Cela signifie que les symboles externes dans votre bibliothèque ne sont jamais résolus jusqu'à ce que vous établissiez un lien avec lui pour créer un exécutable. Vous avez également besoin de tous les fichiers de bibliothèque nécessaires à votre bibliothèque.

1

Vous devez lier l'exécutable final avec la bibliothèque d'exécution C++ (-lstdc++); il n'a aucun effet lors de la compilation des objets C++, liant uniquement l'exécutable.

Questions connexes