我有一個VS10項目。我想構建一些C++代碼,以便我可以在Python中使用它。我遵循boost教程並使其工作。然而,VS保持連接boost-python-vc100-mt-gd-1_44.lib,但它只是一個調用boost-python-vc100-mt-gd-1_44.dll的包裝器。這就是爲什麼我需要將.dll與我的.dll(.pyd)文件複製。所以我想將boost:python靜態鏈接到該.dll(.pyd)文件。但我在VS或編譯器和鏈接器手冊中找不到任何配置選項。最奇怪的是,我有一個使用boost :: filesystem的舊項目,它具有相同的配置,但項目鏈接是針對libboost-filesystem - *。lib,它是靜態lib,所以沒關係。我一直在Google上搜索幾個小時而沒有取得任何成功,這讓我瘋狂。MSVC - boost :: python靜態鏈接到.dll(.pyd)
感謝您的任何幫助或建議。
Boost被設置爲:link = static link = shared threading = single threading = multi variant = debug variant = release runtime-link = static runtime-link = shared因此一切都應該在那裏。在VS中,如果我設置了C++> CodeGeneration> Runtime =「static」,我得到一個錯誤「致命錯誤C1189:#error:」使用靜態運行時混合dll boost庫是一個非常糟糕的主意......「 – kangcz 2010-11-08 09:56:03
嗯,由於某種原因,boost仍然假設你想鏈接到它的dll,你是否真的在安裝目錄中有所有版本的boost庫?你可以從命名方案中看到它。我不確定你上面寫出的選項是否是你需要爲所有項目和跑步者設置'C++> CodeGeneration> Runtime =「static」',然後,boost配置系統應該選擇'--build-type =或者你可以用#define選擇所需的連接,檢查boost手冊 – 2010-11-08 15:50:52
嗨,我真的不知道#pragma的用途是什麼,我搜索了頭文件並找到/ boost/python/details/config.hpp來調用#pragma來請求.dll。我試着對它進行評論並請求我的靜態.lib,但它沒有工作。然後我看到在這個頭文件中檢查「#define BOOST_PYTHON_STATIC_LIB」,並在我的源文件中定義它。不,它鏈接好。 (但是這個定義被評論爲已棄用)。 謝謝你的幫助。 – kangcz 2010-11-08 20:28:07