我試圖按照this教程Python嵌入到C++應用程序,和我從打一個路障權開始。讓我帶你通過它...Boost.Python的和錯誤LNK1104:無法打開文件「boost_python-VC100-MT-GD-1_55.lib」
- 我提取Boost庫到C:\ codelibraries \ C++ \ boost_1_55_0
我創造的VC+++一個新的項目,並創建一個 'test1.cpp' 文件它用下面的代碼:
#include <boost/python.hpp> int main(int, char**) { Py_Initialize(); Py_Finalize(); return 0; }
- 我然後把我的VC++目錄下面的目錄>包含目錄:
- C:\ codelibraries \ C++ \ boost_1_55_0
- C:\ codelibraries \ C++ \ boost_1_55_0 \提升\ python的
- C:\ Python27 \包括
- 在我的VC++目錄>庫目錄:
- C:\ codelibraries \ C++ \ boost_1_55_0
- C:\ codelibraries \ C++ \ boost_1_55_0 \庫
- C:\ Python27 \庫
- 在我的VC++目錄>源目錄:
- C:\ Python27 \包括
- C:\ codelibraries \ C++ \ boost_1_55_0
添加這些並運行它之後,我給出錯誤LNK1104:無法打開文件「boost_python- vc100-mt-gd-1_55.lib'。
好的,事實證明,我需要實際上install增強庫。精細。我這樣做。它會創建新文件夾'.. \ boost_1_55_0 \ stage \ lib'。裏面有一個庫文件叫做libboost_python-vc100-mt-gd-1_55.lib和另一個非常相似但排除'gd'部分的庫文件。
在'Linker'>'General'>'Additional Library Directories'下,我添加了C:\ codelibraries \ C++ \ boost_1_55_0 \ stage \ lib。我再次運行它。仍然會給出相同的鏈接器錯誤LNK1104:無法打開文件'boost_python-vc100-mt-gd-1_55.lib'。我進入'stage \ lib'文件夾,看到沒有boost_python-vc100-mt-gd-1_55.lib,只有* lib * boost_python-vc100-mt-gd-1_55.lib。
我重新命名libboost_python-VC100-MT-GD-1_55.lib到boost_python-VC100-MT-GD-1_55.lib並重新構建。
成功,但給了我其他的鏈接錯誤:
error LNK1120: 3 unresolved externals
error LNK2001: unresolved external symbol __imp___Py_NoneStruct
error LNK2019: unresolved external symbol __imp__Py_Finalize referenced in function _main
error LNK2019: unresolved external symbol __imp__Py_Initialize referenced in function _main
而現在我被卡住,這裏來了。我寫的代碼中有幾行是不正確的?這與我使用64位機器有什麼關係?我的包含不正確?如果可以的話請幫忙。任何信息非常感謝,謝謝。
您需要安裝Python並將其標題和庫位置添加到VC搜索路徑。但是你的設置有些奇怪的事情發生。 * lib *前綴被添加到庫名稱的自動添加,所以你不應該做任何重命名。嘗試打開''並追溯到所在的位置,並查看是否可以找出自動鏈接名稱錯誤的原因。 –
Praetorian
您還需要鏈接到python虛擬機的導入庫。 – sehe
@Praetorian我在'Include Directories'中也有'C:\ Python \ include'頭文件夾。我不知道如何追溯並找出整個自動鏈接問題,但我會說我也嘗試在'.. \ libs \ python \ build \ ..'深處的Python示例文件夾中運行bjam.exe。 Boost.Build也在尋找沒有'lib'前綴的python庫。我的'stage \ lib'文件夾中的所有內容都已經附加了'lib'前綴... – akappel