我正在努力获得boost python工作的hello world示例。我使用的是OSX
,boost 1.55
和python 2.7
这是我的hello.cpp
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
我用以下两行编译它:
g++ -fPIC -I/usr/include/python2.7/ -I/usr/local/include/ -c hello.cpp
g++ -shared -Wl, -o hello.so hello.o -L/usr/lib -L/usr/local/lib -lpython2.7 -lboost_python
当我尝试通过import hello.so
将其导入python时,我收到以下错误:
ImportError: dynamic module does not define init function (inithello)
有什么想法吗?
答案 0 :(得分:0)
原来BOOST_PYTHON_MODULE
中的名称必须与库的名称相匹配,所以我将链接步骤更改为
g++ -shared -Wl, -o hello_ext.so hello.o -L/usr/lib -L/usr/local/lib -lpython2.7 -lboost_python