如何在C ++中使用'boost_python-vc110-mt-gd-1_54.lib'?

时间:2013-09-23 09:42:47

标签: c++ boost-python

我正在尝试使用BoostPython在C ++中编写程序。

我的预设是:

一个。 Win32控制台应用程序。

湾Property-> C / C ++ - > General-> Additional Include Directories-> C:\ Python27 \ include; C:\ Program Files \ boost \ boost_1_54_0;

℃。 Property-> Linker-> General-> Additional Library Directions-> C:\ Python27 \ libs;

d。 Microsoft Visual Studio 2012 Express版+ Python 27 + Boost 1.54

我的代码如下:

#include <boost/python.hpp>
using namespace boost::python;

int main( int argc, char ** argv ) 
{
    return 0;
}

如您所见,此代码使用空主函数。我收到了一条错误消息

  

错误LNK1104:无法打开文件'boost_python-vc110-mt-gd-1_54.lib'

我检查了boost('bootstrap.bat'+'bjam.exe')的安装,我在“boost_python-vc110-mt-gd-1_54.lib”安装了boost库的文件夹中进行了搜索,但一无所获。

我找了一些类似的帖子,不像我的问题,他们错过的lib文件带有前缀'lib'。另一方面,我发现this post与我的非常相似。但是当他/她解决他/她的问题时,我发现OP犯了一个错误。也就是说,Boost与python 2.2及其更新版本兼容。其余的答案对我没有帮助。

我想这个问题可能是因为我在安装过程中做错了,或者当我将lib链接到我的应用程序时我错了。

任何人都可以帮我解决这个问题吗?详细的解决方案将是伟大的。非常感谢。 :)

=============================================== ===============

编辑:

我已经使用预建的二进制文件重新安装了Boost。现在我可以链接到编译器要求的lib文件。但是,提出了新的问题。现在我有两个新错误:

  

错误LNK2001:未解析的外部符号__imp ___ Py_NoneStruct

     

错误LNK1120:1个未解析的外部

当我注释掉#include <boost/python.hpp>行时,上述错误就消失了。

我真的无法弄清楚原因。谁能帮我这个?非常感谢。

2 个答案:

答案 0 :(得分:0)

您已将C:\ Python27 \ libs文件夹添加到链接器设置,但是没有boost文件。
您需要运行boost bjam来生成boost库文件。很多提升只是标题,但是你需要构建一些库。
完成后,您需要将目录添加到

  

“Property-&gt; Linker-&gt; General-&gt; Additional Library Directories”

答案 1 :(得分:0)

我发现错误被引发,因为我的计算机中没有正确安装Boost库。实际上,关键是bjam,必须运行它才能构建所有这些必需的库。

我会建议其他遇到此问题的人,如果你不知道如何正确运行bjam,请去搜索Boost的预建二进制文件。这可以为你节省很多时间。