我正在尝试关注 this关于将 Python 嵌入到 C++ 应用程序的教程,我从一开始就遇到了障碍。让我带您了解一下...
- 我将 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++ Directories > Include Directories:
- C:\codelibraries\c++\boost_1_55_0
- C:\codelibraries\c++\boost_1_55_0\boost\python
- C:\Python27\include
- 在我的 VC++ 目录 > 库目录中:
- C:\codelibraries\c++\boost_1_55_0
- C:\codelibraries\c++\boost_1_55_0\libs
- C:\Python27\libs
- 在我的 VC++ 目录 > 源目录中:
- C:\Python27\include
- C:\codelibraries\c++\boost_1_55_0
添加这些并运行后,出现错误 LNK1104:无法打开文件 'boost_python-vc100-mt-gd-1_55.lib'。
好吧,原来我需要 install boost 库。美好的。我这样做。它会创建新文件夹“..\boost_1_55_0\stage\lib”。在其中,有名为 libboost_python-vc100-mt-gd-1_55.lib 的库文件和另一个非常相似但不包括“gd”部分的库文件。
在“链接器”>“常规”>“其他库目录”下,我添加了 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位机有关系吗?我的包含不正确吗?如果可以的话请帮忙。非常感谢任何信息,谢谢。
最佳答案
我要回到这个问题,因为我不想让它无人回答。事实证明,问题是试图将 64 位 Python 实现与 32 位版本的 boost 库一起使用。切换到 32 位 Python 后,事情变得容易多了。如果您不必使用 64 位 Python,我建议不要使用它。
关于python - Boost.Python 和错误 LNK1104 : cannot open file 'boost_python-vc100-mt-gd-1_55.lib' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709876/