[英]Building with Boost.Python and static libraries
我想制作一個可以處理python插件的C ++應用程序,所以我要進入boost.python。 我正在創建一些使用CMake構建的測試程序。
在我的測試程序中,我有一個簡單的“庫”,它提出了一個插件接口(使用boost.python將其公開給python)和一個插件加載器(尚未編碼,內部沒有任何內容)。
當我嘗試直接構建可執行文件(不包含任何庫)時,出現鏈接錯誤(公開的模塊稱為pythonPlugin):
duplicate symbol _initpythonPlugin in:
CMakeFiles/pythonPluginer.dir/main.cpp.o
libcoreLib.a(PluginLoader.cpp.o)
duplicate symbol __Z24init_module_pythonPluginv in:
CMakeFiles/pythonPluginer.dir/main.cpp.o
libcoreLib.a(PluginLoader.cpp.o)
構建中間靜態庫時,我得到相同的結果。 但是,當我將此庫轉換為共享庫時,它可以正常工作。 這是子CMakeList.txt:
file(GLOB sources core/*.h core/*.cpp )
add_library(coreLib SHARED ${sources})
target_link_libraries(coreLib
${PYTHON_LIBRARIES}
${Boost_LIBRARIES})
add_executable(pythonPluginer main.cpp)
target_link_libraries(pythonPluginer
coreLib)
您對此有何解釋? 是否可以在不使用共享庫的情況下使用boost / python編寫程序?
謝謝,丹尼斯。
我會嘗試從file(GLOB ...)命令中刪除core / *。h頭文件不需要編譯,這實際上可能會導致符號重復的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.