来自: http://www.itivy.com/python/archive/2012/2/13/python-call-cpp-module.htmlhtml
Python能够调用C++写的扩展模块,具体调用的方法以下:python
1.去http://www.boost.org/下载boost包,我用的是boost_1_48_0.zipbootstrap
2.解压,进入目录找到bootstrap.bat 脚本,并执行,会在相同文件夹生成 bjam.exe文件ui
3.打开VS2005 在tools->...command prompt,定位到boost主目录下,执行bjam --with-python --build-type=complete stagespa
编译成功后会在 ...\boost_1_48_0\stage\lib 下找到python所使用的boost库包括.lib 和 .dll.net
4.在vs2005中新建一个空的动态连接库工程,设置工程的属性,把boost的库路径 ...\boost_1_48_0\stage\libcode
python库路径 ...\Python27\libs (python安装目录)加上;把头文件路径 ...\Python27\include 和 ...\boost_1_48_0 加上htm
5.新建hello.cpp文件,把下面代码拷进去blog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#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);
}
|
也能够在工程属性中设置输出名为hello_ext.pyd
注意:必须与BOOST_PYTHON_MODULE(hello_ext)中模块名相同(我用的是hello_ext)ip
7.最后把hello_ext.pyd和boost_python-vc90-mt-gd-1_48.dll
拷贝到python的工做目录下,不太重新验证一下好像boost_python-vc90-mt-gd-1_48.dll不拷也能够
8.在python 工做目录下新建hello.py编写以下代码:
import hello_ext
hello_ext.greet()
执行就能够了。
原文连接:http://blog.csdn.net/co_diy/article/details/7250792