只有我一个人尝试使用以下组合: boost_1_45_0、MSVC 10、Python31?
我发现来自 boost (boost_1_45_0\libs\python\example\quickstart\embedding.cpp) 的基本示例既没有编译(我找到了如何修复它,请参见下文)也没有工作。 编译时问题:
if (PyImport_AppendInittab("embedded_hello", initembedded_hello) == -1)
throw std::runtime_error("Failed to add embedded_hello to the interpreter's "
"builtin modules");
我发现正确的名称不是initembedded_hello而是init_module_embedded_hello。所以我的第一个问题是我对这个重命名是正确的吗?
第二个问题是导入我声明的模块时SystemError: NULL result without error in PyObject_Call
:
from embedded_hello import *
注释掉导入表明内部 python 模块(如 io)工作正常。那么第二个问题导入有什么问题?
如有任何帮助,我们将不胜感激!
最佳答案
对于 Python 3,使用 PyInit_embedded_hello 而不是 initembedded_hello。适用于我的 msvc9。
显然,quickstart\embedding.cpp 还没有针对 Python 3 进行更新。看看 pyhon/test/exec.cpp,它是相似的并且是最新的。
Msvc10 使用与 Python 不同的 C 运行时库,这可能会导致运行时崩溃。用于构建 Python 2.6、2.7、3.1 和 3.2 扩展的推荐编译器是 msvc9,或链接到 vc90crt 的编译器。
关于python-3.x - Boost Python 示例失败两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636033/