1. 程式人生 > >【C++】 Debug 版的 C/C++ Python 擴充套件模組連結錯誤:Error LNK1104 cannot open file 'python27_d.lib

【C++】 Debug 版的 C/C++ Python 擴充套件模組連結錯誤:Error LNK1104 cannot open file 'python27_d.lib

Debug 版的 C/C++ Python 擴充套件模組連結錯誤:Error LNK1104 cannot open file 'python27_d.lib'


環境配置

(1)python的lib 以及標頭檔案分別加到vc的include/lib directories中去。

(2)寫完編譯後出現找不到python33_d.lib 錯誤,出現這個錯誤的原因是:python_d.lib是 庫的除錯後形式,當我們以debug模式編譯工程時,python就用這個lib檔案,但是這個檔案是不可用 的。對於這點,最快的辦法就是強制要求python在任何情況下都是用非除錯版本,就可以了。

所以要做的是:

  • 修改python標頭檔案(位置:C:\Python27\include)pyconfig.h的配置,修改指向除錯庫檔案的引數,由
    #   if defined(_DEBUG)  
    #    pragma comment(lib,"python33_d.lib")  
    #   elif defined(Py_LIMITED_API)  
    #    pragma comment(lib,"python3.lib")  
    #   else  
    #    pragma comment(lib,"python33.lib")  
    #   endif /* _DEBUG */ 

    修改為:

  • #   if defined(_DEBUG)  
    #    pragma comment(lib,"python33.lib")  
    #   elif defined(Py_LIMITED_API)  
    #    pragma comment(lib,"python3.lib")  
    #   else  
    #    pragma comment(lib,"python33.lib")  
    #   endif /* _DEBUG */  

    (3)在Visual Studio中編譯時必須注意,若Python為64bit而VS C++ Project Config裡的platform是32bit,會報錯:(我就在這裡入坑了)

  • Error   1   error LNK2019: unresolved external symbol __imp__Py_Finalize referenced in function _main    
    Error   2   error LNK2019: unresolved external symbol __imp__PyEval_CallObjectWithKeywords referenced in function _main    
    Error   3   error LNK2019: unresolved external symbol __imp__PyObject_GetAttrString referenced in function _main    
    Error   4   error LNK2019: unresolved external symbol __imp__PyImport_ImportModule referenced in function _main    
    Error   5   error LNK2019: unresolved external symbol __imp__Py_Initialize referenced in function _main    
    Error   6   error LNK1120: 5 unresolved externals  

    注意修改自己的platform!!!

記得配置好環境變數!