我想创建一个共享库(真正的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
我也有一个以类似的方式构建的可执行文件数量(单元测试),并且它们完美地工作。
我应该补充一点,这是在Linux上使用gcc。
你们是不是要链接到的boost :: Python的静态:
无论如何,与GNU LD(查找
man ld
)的整个存档链接?或者你是静态链接到包装库?如果前者:在这里看到我的答案:http://stackoverflow.com/questions/4120169/msvc-boostpython-static-linking-to-dll-pyd – 2010-11-19 17:04:02这是后者。但是,感谢你的链接,有趣的是阅读静态链接到提升python并不总是工作... – Krumelur 2010-11-20 11:32:00