准备条件:
1、从Boost.Python中编译出boost_python.dll和lib来。方法参见boost官方手册,按手册的方法比较简单。
2、安装python。建议用2.x版的,3+版本有些接口变了,boost的支持上貌似还有点问题。
3、配置项目。C++输入文件、链接器等等,需要包含的包括boost/python.hpp,python/include,python/libs/pythonxx.lib,以及编译出来的boost_python.lib
4、把boost_python.dll复制到项目debug/release目录中。
(我用的vc2008)
预期效果:注册一个包含C函数的模块供python调用。
C++测试用的代码(main.cpp):
//模块名必须和BOOST_PYTHON_MODULE(...)中的参数一致(自动生成initModulename()函数用)
//修改.dll扩展名为.pyd,放入python路径的Dlls文件夹中
#include <boost/python.hpp>
using namespace boost::python;
//需要注册到python中的函数
char const* greet()
{
return "hello python";
}
//一个dll项目推测只能包含一个MODULE,但同一个module可以注册多个function
BOOST_PYTHON_MODULE(hello)//define module
{
def("greet", greet);
//def("func name in python", func pointer);
//add...
}
python测试用的代码(test.py):
import hello
print hello.greet()
顺利完成。