python调用c++扩展模块

昨天完成了用python调用c++,在这里做个记录。

整个操作流程如下:

1.去http://www.boost.org/下载boost包,我用的是boost_1_48_0.zip

2.解压,进入目录找到bootstrap.bat 脚本,并执行,会在相同文件夹生成 bjam.exe文件

3.打开VS2005 在tools->...command prompt,定位到boost主目录下,执行bjam --with-python --build-type=complete stage

编译成功后会在 ...\boost_1_48_0\stage\lib 下找到python所使用的boost库包括.lib 和 .dll

4.在vs2005中新建一个空的动态链接库工程,设置工程的属性,把boost的库路径 ...\boost_1_48_0\stage\lib

python库路径 ...\Python27\libs (python安装目录)加上;把头文件路径 ...\Python27\include 和 ...\boost_1_48_0 加上

5.新建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);

}


6.编译,生成,把输出的dll改名为hello_ext.pyd,

也可以在工程属性中设置输出名为hello_ext.pyd
  注意:必须与BOOST_PYTHON_MODULE(hello_ext)中模块名相同(我用的是hello_ext)

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://hi.baidu.com/zhouhanqing/blog/item/cfeb8c3c0f6b66cf9e3d62f4.html

PythonC++都是很强大的编程语言,它们都有着自己的优势和特点。在一些情况下,我们可能需要在Python调用C++代码来实现更高效的计算或者更底层的操作。这时候可以使用PythonC++扩展库来实现。 PythonC++扩展库可以让我们将C++代码编译成Python调用模块,然后在Python环境中使用。常见的PythonC++扩展库有Boost.Python、Cython、SWIG等。这里以Cython为例,介绍如何使用Python调用C++。 1.安装Cython 在使用Cython之前,需要先安装Cython。可以通过pip工具进行安装,命令如下: ``` pip install cython ``` 2.编写C++代码 下面是一个简单的C++代码示例,实现了一个计算两个整数和的函数: ``` // sum.cpp int sum(int a, int b) { return a + b; } ``` 3.编写Cython代码 下面是一个简单的Cython代码示例,调用了上面的sum函数: ``` # sum.pyx cdef extern from "sum.cpp": int sum(int a, int b) def py_sum(int a, int b): return sum(a, b) ``` 4.编写setup.py文件 下面是一个简单的setup.py文件,用于编译Cython代码生成Python模块: ``` # setup.py from distutils.core import setup from Cython.Build import cythonize setup( ext_modules=cythonize("sum.pyx") ) ``` 5.编译生成Python模块 在命令行中执行以下命令,即可编译生成Python模块: ``` python setup.py build_ext --inplace ``` 6.在Python调用C++代码 下面是一个简单的Python示例,调用了上面生成的Python模块: ``` # main.py import sum a = 1 b = 2 c = sum.py_sum(a, b) print(c) # 输出3 ``` 通过上述步骤,就可以在Python调用C++代码了。需要注意的是,在编写Cython代码时,需要使用Cython的语法规则,而不能直接使用Python的语法规则。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值