J'essaie de créer une bibliothèque partagée (en fait un module Python) qui se lie à une bibliothèque statique. Les deux bibliothèques font partie du même projet et sont construites en utilisant cmake.CMake: Bibliothèque partagée qui utilise la bibliothèque statique
Maintenant, la bibliothèque partagée est construit comme ceci:
add_library(MyLibPython SHARED ${PYTHON_WRAPPERS_SRC})
set_target_properties(MyLibPython PROPERTIES PREFIX "")
target_link_libraries(MyLibPython MyLibStatic ${LIBS})
Cela construit sans erreur, mais lorsque je tente d'importer le module Python, je reçois:
ImportError: lib/python/MyLibPython.so: undefined symbol: _Zone_of_my_MyLibStatic_functions
J'ai aussi un nombre d'exécutables (tests unitaires) qui sont construits de la même manière, et ils fonctionnent parfaitement.
Je devrais ajouter, cela utilise gcc sous Linux.
Essayez-vous un lien vers Boost :: Python statique? Ou êtes-vous lié à la bibliothèque enveloppée statiquement? Si le premier: voir ma réponse ici: http://stackoverflow.com/questions/4120169/msvc-boostpython-static-linking-to-dll-pyd –
C'est le dernier. Mais merci pour le lien, il était intéressant de lire que lier statiquement pour booster python ne fonctionne pas toujours aussi bien ... – Krumelur