簡體   English   中英

使用Boost.Python和靜態庫進行構建

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM