首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

利用swig兑现python调用C/C++的方法

2012-12-18 
利用swig实现python调用C/C++的方法Python是一门语法简单而且清晰的脚本语言,不过执行效率比较低。简单的说

利用swig实现python调用C/C++的方法

        Python是一门语法简单而且清晰的脚本语言,不过执行效率比较低。简单的说就是开发相对C/C++容易,但是执行效率不如C/C++,甚至有人称之为执行效率最低的鱼眼。如果可以将最重要的而且变化一般不大的运算逻辑用 C/C++实现,其他用python书写,那就最好不过了。据说python底层就是用C实现的,因此这一想法也是可行的。目前来说,python调用C/C++有以下几种方法:

1)  利用python提供的API调用C。主要方法是在c++文件中借助Python提供的头文件python.h,对C/Cpp函数进行封装。然后将它编译为一个动态链接库(一个Module)。最后在Python文件中将这个module 加载进去,就可以调用了。具体例子请见http://blog.csdn.net/marising/article/details/2845339

2)  利用boost工具进行封装。相对1)来说更为方便,但是和1)一样都需要对原C代码进行破坏。具体例子请见http://blog.csdn.net/marising/article/details/2917827

3)  利用ctypes。ctypes是Python标准库提供的调用动态链接库的模块,相对1)2)来说不需要对源代码进行破坏,只需要对相应的c++数据类型进行python的转换。但是据说对C/C++的支持不一定完整.

4)  利用Swig工具。Swig和boost一样是一个对C进行封装的工具,但是和boost不一样,它不需要对源代码进行破坏,只需要新增一个接口文件对需要封装的函数和类进行描述,swig会自动对c代码封装成一个能被调用的module供Python调用。具体的例子后面慢慢补上。

热点排行