【发布时间】:2015-02-06 15:47:27
【问题描述】:
我最近在尝试修复我正在开发的 c++ 软件中的 python 实现时偶然发现了一些东西。如果您包含以下内容:
#include <python.h>
#include <boost/python.hpp>
那么下面的代码会导致内存访问冲突的 SEH 异常:
boost::python::object mainModule;
Py_Initialize();
std::lock_guard<std::mutex> lg(PythonAccessMutex);
this->mainModule = boost::python::import("__main__");
boost::python::dict globalDict = boost::python::extract<boost::python::dict>(this->mainModule.attr("__dict__"));
删除 python.h 包含解决了我的问题,但我一直无法找出导致异常的原因,我希望能够与我的同事分享他们为什么不应该这样做(过去它破坏代码的明显原因)
我应该具体指出代码运行良好,直到它到达提取函数。
【问题讨论】: