python-3.x - Boost Python 示例失败两次

标签 python-3.x boost-python visual-studio-2010

只有我一个人尝试使用以下组合: 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/

相关文章:

visual-studio-2010 - Powershell:从其他PS脚本内部调用的Powershell脚本获取返回结果

python - 相关对象不存在于/个人资料

c++ - 为 Boost.Python 包含带有 Bjam 的系统库

.net - 编辑 XAML 时 Visual Studio 2010 随机崩溃

visual-studio-2010 - Visual Studio 2010 中难以捉摸的 MSBuild 项目文件创建向导在哪里?

c++ - Boost::python 使用和返回模板公开 C++ 函数

python - 如何将具有不同长度值的列表转换为字典?

Python:如何根据某些条件合并和求和列表值

python - 使用streamlit Python代码找不到上传文件的路径

c++ - Boost::python:对象在重写的方法中自行销毁