我正在尝试将C ++和Python与Boost.Python链接。
我有Visual Studio 2012 Express版,Python 2.7和Boost 1.54。
我按照Boost官方网站的说明在我的机器上安装Boost,这意味着我按照以下步骤操作:
我下载预建二进制文件并将其安装在C:\local\boost_1_54\
。
我运行了bjam b2 --build-dir=C:\local\boost_1_54 toolset=msvc11.0 --build-type=complete stage
。
然后我在属性面板中进行了这样的操作:
将C:\local\boost_1_54\; C:\Python27\include;
添加到C / C ++ - > General->其他包含目录。
将C:\local\boost_1_54\libs; C:\local\boost_1_54\lib64-msvc-11.0; C:Python27\libs;
添加到链接器 - >常规 - >其他库目录。
将"Not Using Precompiled Headers"
设置为C / C ++ - >预编译标题 - >预编译标题。
我创建了一个空项目,源代码非常简单,如下所示(我实际上尝试运行一个hello world示例,但不得不减少代码以排除干扰):
#include <boost/python.hpp>
int main()
{
return 0;
}
但是,当我尝试构建解决方案时,会弹出两个错误:
错误LNK2001:未解析的外部符号
__imp___Py_NoneStruct
错误LNK1120:1个未解析的外部
我评论了行#include <boost/python.hpp>
,然后错误消失了。
令我困惑的是,我发现python.hpp位于它应该是的文件夹中。
我可以知道我错了吗?
=============================================== ===========
编辑:
我尝试在代码中使用#include <Python.h>
。但它引发了另一个错误
错误LNK1104:无法打开文件'python27_d.lib'
任何人都可以帮助我?
答案 0 :(得分:2)
以下答案试图解决问题
error LNK1104: cannot open file 'python27_d.lib'
_d
后缀表示它正在搜索库的调试版本。 Python安装是一个发布版本,因此您无法将Debug项目与其链接。
<强>调试/发布强>
Debug版本具有符号信息,通常不进行优化。此版本用于调试零售版本是已发布的版本。
如果您在调试模式下构建项目,它将始终尝试链接调试库。要克服这个问题
python27.lib
而不是python27_d.lib
相关联。请参阅How to: Create a Release Build python27_d.lib
。请参阅Python Developer’s Guide 答案 1 :(得分:1)
包括:
#include <python.h>
Boost没有包含python api ...你需要使用python27.lib构建boost