C++呼叫python配置及編譯出現的問題
阿新 • • 發佈:2021-01-01
技術標籤:C++ 踩坑
環境配置
-
python的lib 以及標頭檔案分別加到vc的include/lib directories中去。
-
寫完編譯後出現找不到python33_d.lib 錯誤,出現這個錯誤的原因是:python_d.lib是 庫的除錯後形式,當我們以debug模式編譯工程時,python就用這個lib檔案,但是這個檔案是不可用 的。對於這點,最快的辦法就是強制要求python在任何情況下都是用非除錯版本,就可以了。
所以要做的是:
修改python標頭檔案pyconfig.h的配置,修改指向除錯庫檔案的引數,由
[cpp] view plaincopy
# 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 */
修改為:
[cpp] view plaincopy
# 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 */
- 在Visual Studio中編譯時必須注意,若Python為64bit而VS C++ Project Config裡的platform是32bit,會報錯:
[cpp] view plaincopy
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 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