首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入Boost Python模块(function_impl_base9max_arityEv)时出错

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

Stack Overflow用户
提问于 2019-04-01 13:14:15
回答 1查看 756关注 0票数 2

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

我从Introduction获得了以下源代码

代码语言:javascript
复制
 // 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);
 }

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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上工作了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55456049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档