导入 Boost Python 模块 (function_impl_base9max_arityEv) 时出错

Error importing Boost Python module (function_impl_base9max_arityEv)

本文关键字:arityEv base9max 出错 impl 导入 Python 模块 function Boost      更新时间:2023-10-16

我正在尝试使用boost-python构建一个C++Python扩展的hello world。

我从 https://www.mantidproject.org/Boost_Python_Introduction 那里得到了以下源代码:

 // test.cpp
 #include <iostream>
 #include <boost/python.hpp>

 void sayHello()
 {
   std::cout << "Hello, Python!n";
 }
 BOOST_PYTHON_MODULE(test)  // Name here must match the name of the final shared library, i.e. mantid.dll or mantid.so
 {
    boost::python::def("sayHello", &sayHello);
 }

但是,当我尝试使用以下命令进行编译时:

g++ -fPIC -I/usr/include/python3.6m test.cpp -c
g++ -shared test.o -o test.so -I/usr/include/python3.6m -I/lib64/libboost_python3

此命令成功编译代码并创建库文件 test.so。

但是,当我尝试在python3中导入模块时,出现以下错误:

ImportError:/home/yt/C++/test.so: undefined symbol: _ZNK5boost6python7objects21py_function_impl_base9max_arityEv

链接导入错误在提升python你好程序似乎建议命令我上面使用可以通过添加 -I/usr/include/python3.6m-I/lib64/libboost_python3 来解决问题,但它没有。

我做错了什么?

谢谢!

操作系统: Fedora 29 x86_64

谢谢大家!

问题是链接器命令。正确的是:

g++ -fPIC -I/usr/include/python3.6m test.cpp -c

g++ -L/lib64 -shared test.o -o test.so -lpython3.6m -lboost_python3

现在它可以在 Fedora 29 上运行

相关文章:
  • 没有找到相关文章