我正在尝试按照this教程将Python嵌入到C ++应用程序中,并且从一开始就遇到了障碍。让我带你通过它......
我在VC +++中创建了一个新项目,并在其中创建了一个'test1.cpp'文件,其中包含以下代码:
#include <boost/python.hpp>
int main(int, char**) {
Py_Initialize();
Py_Finalize();
return 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'部分。
在“链接器”下&gt; '一般'&gt; “其他库目录”,我添加了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位机器有什么关系吗?我的包含不正确吗?如果可以的话请帮忙。非常感谢任何信息,谢谢。
答案 0 :(得分:4)
我回到这个问题,因为我不想让它没有答案。事实证明,问题是尝试使用64位的Python实现和32位版本的boost库。切换到32位Python后,事情变得容易多了。如果您不必使用64位Python,我建议不要使用它。
答案 1 :(得分:1)
在我的例子中,只有.lib文件以libboost *开头而不是stage / lib中的boost *。所以我必须从http://boost.teeks99.com/下载具有所有libboost * .lib,boost * .lib和boost * .dll版本的二进制文件,并将boost * .lib和boost * .dll添加到stage \ lib库为了它的工作。