我正在尝试使用boost-python构建hello C++ 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中的模块时,会出现以下错误:
_ZNK5boost6python7objects21py_function_impl_base9max_arityEv:ImportError: //yt/C++/test.o:未定义符号:
链接Import Error on boost python hello program似乎表明我上面使用的命令可以通过添加-I/usr/include/python3.6m和-i/ link 64/libboost_python3 3来解决这个问题,但它没有。
我做错了什么?
谢谢!
操作系统: Fedora 29 x86_64
发布于 2019-04-01 13:59:43
谢谢你们!
问题是链接器命令。正确的办法是:
g++ -fPIC -I/usr/include/python3.6m test.cpp -c
g++ -L /lib64 -shared .o -o test.so -lpython3.6m -lboost_python3
现在它可以在Fedora 29上工作了
https://stackoverflow.com/questions/55456049
复制相似问题