2

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

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

但是,当我按照此处的说明进行操作时。我被困在第 3.1.4 步。

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

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

exec.obj:错误LNK2019:函数“class boost::python::api::object __cdecl boost::python::eval(class boost::python::str,class boost::python:中引用的未解析的外部符号__imp__PyEval_GetGlobals: :api::object,class boost::python::api::object)" (?eval@python@boost@@YA?AVobject@api@12@Vstr@12@V3412@1@Z).... ....\bin.v2\libs\python\build\msvc-11.0\debug\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\extending.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...

...跳过 test_ext 因为缺少扩展.pyd ...

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

链接 /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console

/out:"bin\test_embed.test\msvc-11.0\debug\test_embed.exe"

/LIBPATH:"C:\Python2.7.5\libs"

@"bin\test_embed.test\msvc-11.0\debug\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\.

谁能帮我解决这个问题?

4

2 回答 2

2

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

记录了我必须做些什么才能让它运行,请参阅底部的 64 位特定配置。

于 2015-04-10T17:45:22.633 回答
1

这意味着链接器无法正确链接到 Python 库。我之前在尝试链接到 64 位 Python 时遇到过这种情况。你应该尝试安装 32bit python 看看是否可行。

于 2013-09-25T15:42:37.947 回答