无法在 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。编译出错的主要内容,如果未能解决你的问题,请参考以下文章