综合网上的教程和自己的测试,将boost.python的example示例成功编译成python模块,具体过程如下:
我的环境:VS2008,python26,boost1_40
一、安装boost
使用boostpro可配置已编译包安装,这种方式比较简单,源码编译安装方式我没有尝试,这里选择的是1_40版本,包选择的时候选择勾选python,子选项可选择
vs的版本。
二、配置include和library path
在vs2008里面将boost和python的include和library路径分别加入到 "包含文件"和"库文件"两栏中
我配置的是:
包含文件(include):
E:\devtool\boost\boost_1_40
E:\devtool\EPDPython26\include
库文件(library):
E:\devtool\EPDPython26\libs
E:\devtool\boost\boost_1_40\libs
三、编译example中的getting_started1.cpp为python模块
(1)vs2008中创建一个win32 Dll项目;
(2)清除所有默认创建的源文件和资源文件;(不是必要的)
(3)修改工程属性:
C/C++中【不使用预编译头】【不启用最小重新生成】
Link 中清除 模块定义文件
(4)源代码夹中添加现有项,增加源码文件,这里用Boost Python自带的example文件getting_started1.cpp
(5)生成
(6)将生成的<your project>.dll按模块名称更改为getting_started1.pyd,必须对应getting_started1.cpp代码中的module name:
BOOST_PYTHON_MODULE(getting_started1)
{
// Add regular functions to the module.
python::def("greet", greet);
python::def("square", square);
}
四、测试
boost python动态库文件 boost_python-vc90-mt-gd-1_40.dll 要放在python当前工作或搜索路径中
然后在python interpreter中执行:
>>> import getting_started1
>>> print getting_started1.greet()
hello, world