首页 > 解决方案 > Boost.Python - ImportError:动态模块未定义模块导出函数(PyInit_example)

问题描述

我正在尝试使用命令行编译模块https://github.com/Auctoris/boost_python_impex 。

以下命令成功构建并链接模块 .so 文件:

g++ -fPIC -I/usr/include/python3.6m library.cpp example.cpp -c
g++ -L /lib64 -shared example.o -o example.so -lpython3.6m -lboost_python3

但是,当我从 python3 导入模块时,我收到以下错误消息:

  import example
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define module export function (PyInit_example)

我不理解此错误消息,因为 library.cpp 文件包含以下行:

BOOST_PYTHON_MODULE(example)

我正在从Python3导入模块。

我的编译命令有什么问题/缺少什么?

我正在使用 Fedora 64 位。

谢谢!

标签: c++python-3.xboost

解决方案


以下编译命令适用于 Fedora 29:

g++ -fPIC -I/usr/include/python3.6m library.cpp example.cpp -shared -o example.so -lboost_python3

推荐阅读