Chinaunix首页 | 论坛 | 博客
  • 博客访问: 214449
  • 博文数量: 78
  • 博客积分: 2222
  • 博客等级: 大尉
  • 技术积分: 745
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 10:48
文章分类

全部博文(78)

文章存档

2012年(7)

2011年(33)

2010年(38)

分类: Python/Ruby

2012-09-04 19:25:57

使用Python的ctypes,我们可以直接调用由C直接编译出来的函数。其实就是调用动态链接库中的函数。为什么我们需要这样做呢,因为有些时候,我们可能需要一个性能上比较讲究的算法,有些时候,我们可以在Python中使用已经有了的现成的被封闭在动态链接库中的函数。下面是如何调用的示例。

首先,我们用一个乘法来表示一个算法功能。下面是C的程序:

  1. int
  2. multiply(int num1, int num2)
  3. {
  4.     return num1 * num2;
  5. }

然后,自然是把这个C文件编成动态链接库:

Linux下的编译:

  1. gcc -c -fPIC libtest.c
  2. gcc -shared libtest.o -o libtest.so

于是在我们的Python中可以这样使用:
(其中的libtest.so在Windows下改成libtest.dll即可)

  1. >>> from ctypes import *
  2. >>> import os
  3. >>> libtest = cdll.LoadLibrary(os.getcwd() + '/libtest.so')
  4. >>> print libtest.multiply(2, 2)
  5. 4

注意:上面的Python脚本中需要把动态链接库放到当前目录中。


转自酷壳 – CoolShell.cn 

 Python和C++互相调用的系列文章

Python调用C/C++的种种方法

浅谈 Python 程序和 C 程序的整合

阅读(3006) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册