Я пытаюсь создать общую библиотеку (действительно модуль Python), которая ссылается на статическую библиотеку. Обе библиотеки являются частью одного и того же проекта и построены с использованием cmake.CMake: Общая библиотека, использующая статическую библиотеку
Теперь общая библиотека построена так:
add_library(MyLibPython SHARED ${PYTHON_WRAPPERS_SRC})
set_target_properties(MyLibPython PROPERTIES PREFIX "")
target_link_libraries(MyLibPython MyLibStatic ${LIBS})
Это создает без ошибок, но когда я пытаюсь импортировать модуль Python, я получаю:
ImportError: lib/python/MyLibPython.so: undefined symbol: _Zone_of_my_MyLibStatic_functions
У меня также есть количество исполняемых файлов (модульных тестов), построенных аналогичным образом, и они отлично работают.
Следует добавить, что это использование gcc в Linux.
Вы пытаетесь связать Повысьте :: Python статически? Или вы статически привязываетесь к обернутой библиотеке? Если первый: см. Мой ответ здесь: http://stackoverflow.com/questions/4120169/msvc-boostpython-static-linking-to-dll-pyd –
Это последний. Но спасибо за ссылку, было интересно прочитать, что статическая ссылка на boost python не всегда работает ... – Krumelur