无法成功安装Boost.Python

时间:2013-09-25 15:09:45

标签: c++ boost-python

我正在尝试在我的计算机上安装Boost.Python。 (Windows7 64位,Visual Studio 2012,Python 2.7 64位和Boost 1.54)

按照说明,我已经成功安装了Boost Library,然后我必须单独安装Boost.Python。

然而,当我按照here的指示行事时。我陷入了步骤3.1.4。

我输入C:\boost_1_54_0\…\quickstart> bjam toolset=msvc --verbose-test test

然后会弹出135个未解决的外部错误。其中之一是:

  

exec.obj:错误LNK2019:未解析的外部符号   __imp__PyEval_GetGlobals在函数“class boost :: python :: api :: object __cdecl boost :: python :: eval”中引用   boost :: python :: str,类boost :: python :: api :: object,class   提高::蟒蛇:: API ::对象)”   (?EVAL @蟒@ @@升压YA?AVobject @ API @ 12 @ VSTR @ 12 @ V3412 @ 1 @ Z)........ \ bin.v2 \库\蟒\构建\ MSVC-11.0 \调试\ boost_python-vc110-GD-1_54.dll

我可以知道如何解决这个问题?

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

编辑:

根据@Kyle的建议,我已经卸载了64位Python并用32位Python(2.7.5)替换它。

然后我写了一个非常简单的代码,如下所示:

#include <boost\python.hpp>       // This header used to raise error before
#include <Python.h>
using namespace std;

void main()
{
    return;
}

效果很好。然后我的好奇心又向我推了一步,我在第一篇文章中尝试了这个例子。事实证明,那135个未解决的外部错误已经消失。相反,我有这个:

  

msvc.link.dll bin \ msvc-11.0 \ debug \ extending.pyd LINK:致命错误

     

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

     

调用“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat”x86

     

nullink / NOLOGO / INCREMENTAL:NO / DLL / DEBUG / MACHINE:X86 / MANIFEST / subsystem:console   /out:"bin\msvc-11.0\debug\extending.pyd”   /IMPLIB:"bin\msvc-11.0\debug\extendi ng.lib“   /LIBPATH:"C:\Python2.7.5\libs“
  @“bin \ msvc-11.0 \ debug \ extends.pyd.rsp”

    if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%
     

...失败msvc.link.dll bin \ msvc-11.0 \ debug \ extending.pyd

     

bin \ msvc-11.0 \ debug \ extending.lib bin \ msvc-11.0 \ debug \ extending.pdb ...

     

...因缺乏extend.pyd而跳过test_ext ...

     

msvc.link bin \ test_embed.test \ msvc-11.0 \ debug \ test_embed.exe链接:警告

     

LNK4001:未指定对象文件;库使用LINK:错误

     

LNK2001:未解析的外部符号_mainCRTStartup

     

bin \ test_embed.test \ msvc-11.0 \ debug \ test_embed.exe:致命错误

     

LNK1120:1个未解析的外部

     

调用“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat”x86 nul

     

link / NOLOGO / INCREMENTAL:NO / DEBUG / MACHINE:X86 / MANIFEST / subsystem:console

     

/出: “BIN \ test_embed.test \ MSVC-11.0 \调试\ test_embed.exe”

     

/ LIBPATH:“C:\ Python2.7.5 \ libs”

     

@ “BIN \ test_embed.test \ MSVC-11.0 \调试\ test_embed.exe.rsp”

    if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%
     

...失败msvc.link bin \ test_embed.test \ msvc-11.0 \ debug \ test_embed.exe

     

bin \ test_ embed.test \ msvc-11.0 \ debug \ test_embed.pdb ...

     

...删除bin \ test_embed.test \ msvc-11.0 \ debug \ test_embed.pdb

     

...跳过test_embed.run缺少test_embed.exe ...

     

...未能更新5个目标...

     

...跳过4个目标......

很抱歉打扰你一大堆错误信息,我只想提供尽可能多的信息。

关于此boost_python-vc110-gd-1_54.dll,我可以在C:\local\boost_1_54_0_32bit\lib32-msvc-11.0找到它,而我的Boost根目录是C:\local\boost_1_54_0_32bit\

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

就像Kyle C提到的那样,这种情况正在发生,因为它无法找到lib。如果要使用64位,则需要在命令行中指定address-model=64,并在user-config.jam文件中正确指定64位版本的python。

I documented what I had to do to get this running,请参阅64位特定配置的底部。

答案 1 :(得分:1)

这意味着链接器无法正确链接到Python lib。我试图链接到64位Python之前遇到过这个问题。你应该尝试安装32位python,看看是否有效。