0

我现在处于巨大的抑郁症中!我花了 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 天以来,我感到很震惊……但那是我从那以后最接近的一次。请帮我!

4

1 回答 1

1

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

于 2013-09-16T04:18:29.510 回答