boost python_科学网—Boost.Python的坑 - 邹佳恒的博文

因工作需要,得在Python里调用C++的库。Boost.Python是个好东西,导出C++的类和函数都很方便。但有些细微处稍不留意,很容易掉坑里爬不出来。即便使用过很久了,自己昨天还是因疏忽掉坑了,特此纪念一下。

由于是个比较简单的包,代码不多,编译时一条WARNING都没有就过了。但在Python中 import 编译好的C++库时,报下面的错:dynamic module does not define init function boost

检查了代码好多遍,才终于发现:BOOST_PYTHON_MODULE(CppLib)

这儿对CppLib的名称要求必须与编译完成的库文件名一致(不用后缀)。比如,我编译后的库文件名为“libCppLib.so”,但BOOST_PYTHON_MODULE处习惯性写成了“CppLib”,然后在Python中“import libCppLib”时,就会出现找不到 init 函数的报错(可以理解为名字空间不匹配了)。

爬坑总结:BOOST_PYTHON_MODULE中的名字必须和编译后生成的库文件名相一致。

转载本文请联系原作者获取授权,同时请注明本文来自邹佳恒科学网博客。

链接地址:http://blog.sciencenet.cn/blog-3287381-1042118.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值