gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:49:19 24 4
gpt4 key购买 nike

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

我从 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

链接Import Error on boost python hello program似乎建议命令我在上面使用的是通过添加 -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 上运行

关于python - 导入 Boost Python 模块时出错 (function_impl_base9max_arityEv),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55456049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com