无法在 Visual Studio 2008 中构建 Boost.python。编译出错

Posted

技术标签:

【中文标题】无法在 Visual Studio 2008 中构建 Boost.python。编译出错【英文标题】:Unable to Build Boost.python in Visual Studio 2008. Compilation gives error 【发布时间】:2013-09-15 20:34:46 【问题描述】:

我现在很沮丧!我花了 2 天时间尝试使用 boost.python 。请指导我!我会解释我做了什么。

我有 Winows 7 64 位。 Python 是 64 位 2.7.3,安装在 C:\Python27_amd64。 现在,我将 boost_1_54_0.zip 解压到 F: 目录中。 我用cmd。

引导

这将创建 project-config.jam。我编辑它并插入

使用 msvc : 9.0 ; 使用python:2.7:C:\Python27_amd64\python:C:\Python27_amd64\include:C:\Python27_amd64\libs;

现在可以了

.\b2

这个过程运行了大约 20 分钟,我被告知 boost 已经成功构建。

之后我从 http://sourceforge.net/projects/boost/files/boost-binaries/ 安装 boost 二进制文件 二进制文件安装在 C:\local\boost_1_54_0 中。

现在我想创建一个通用项目。

现在,我在这里使用给出的在 C++ 中嵌入 python 的代码

#include <boost/python.hpp>
#include <boost/detail/lightweight_test.hpp>
#include <iostream>
namespace py = boost::python;  
using namespace std; 

int main()


  // Initialize the interpreter
  Py_Initialize();
  py::object main_module = py::import("__main__");  
  py::object main_namespace = main_module.attr("__dict__");
  py::exec("print 'Hello, world'", main_namespace);
  py::exec("print 'Hello, world'[3:5]", main_namespace);
  py::exec("print '.'.join(['1','2','3'])", main_namespace);

我将VC++目录下的头文件和库分别设置为F:\boost_1_54_0\boost_1_54_0和F:\boost_1_54_0\boost_1_54_0\stage\lib。

我还设置了项目-->属性-->配置属性-->C/C++-->常规-->C:\Python27_amd64\include 的附加包含目录

同样,我也设置了项目-->属性-->配置属性-->链接器-->通用到 C:\Python27_amd64\libs;"C:\local\boost_1_54_0\lib64-msvc-9.0" .

现在当我使用 x64 调试器进行编译时。它给了我一个错误

test8.exe 中 0x00000000 处的未处理异常:0xC0000005:位置 0x0000000000000000 的访问冲突。

自从过去 2 天以来,我感到很震惊……但那是从那以后我最接近的一次。请帮帮我!

【问题讨论】:

【参考方案1】:

所以你的意思是运行时错误,对吧? 我认为您应该首先确保 boost::python 本身没有抛出异常。 首先尝试使用 catch(...) 在 python 调用周围设置 try 块 如果捕获到异常,则很可能是 boost::python::error_already_set 异常。 因此,您应该像 here

一样对其进行解码

【讨论】:

以上是关于无法在 Visual Studio 2008 中构建 Boost.python。编译出错的主要内容,如果未能解决你的问题,请参考以下文章