繁体   English   中英

boost python on windows 在 import("__main__");

[英]boost python on windows crashes at import("__main__");

我正在编写一个使用 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__");

造成了无声的崩溃。

我添加了Py_Initialize,crash问题解决了

Py_Initialize();
boost::python::object main = boost::python::import("__main__");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM