我正在编写一个使用boost python嵌入的程序。我的程序在Linux Mint上没有问题,但在Windows上它是一个巨大的痛苦。我正在使用MingW,所以我尝试按照本网站上另一个问题的说明创建一个导入库。考虑到所有这些程序编译和链接,python34动态地和静态地提升python。我的程序虽然崩溃,但我无法告诉我生命的原因,我跟着执行并停在:“import(” main “);”
// My python extensions
PyImport_AppendInittab("OpenGL", PyInit_OpenGL);
PyImport_AppendInittab("glm", PyInit_glm);
PyImport_AppendInittab("glfw", PyInit_glfw);
cout << "Initializing Python... ";
Py_Initialize();
cout << "done\n";
using namespace boost::python;
main_module = import("__main__"); // < crashes at this line
main_namespace = main_module.attr("__dict__");
我已经从我的lib搜索路径中移除了libpython34.a并且程序仍然很好,所以我认为这个问题可能并不完全与python本身有关,但是我不知道在哪里寻找问题。我无法获得有关发生的错误的任何详细信息,因为程序只是退出并且什么都不打印,并且我有异常来捕获error_already_set:/ 如果您有任何建议或真的请分享,谢谢!
编辑:我构建了这个简单的python hello world嵌入式程序
PyImport_ImportModule("__main__");
PyRun_SimpleString("from time import time,ctime\n"
"print('Today is',ctime(time())\n)");
Py_Finalize();
这完美无瑕。另一方面:
boost::python::import("__main__");
引发了无声的撞击。