Python如何调用C语言接口

不说太多废话,提高本文使用性。


这是我曾经尝试过的解决方案:

ctypes:  可直接调用c语言动态链接库。


使用步骤:


 1> 编译好自己的动态连接库
 2> 利用ctypes载入动态连接库
 3> 用ctype调用C函数接口时,需要将python变量类型做转换后才能作为函数参数,转换原则见下图:

    Python如何调用C语言接口_第1张图片

 4> Python若想获取ctypes调用的C函数返回值,需要先指定返回值类型。我们将在接下来的完整Sample中看到如何使用。


Sample:

#Step 1:  test.c

#include 

int add(int a, int b)
{
    return a + b;
}

#Step 2: 编译动态链接库 ( 如何编译动态链接库在本文不详解,网上资料一大堆。)
gcc -fPIC -shared test.c -o libtest.so  

#Step 3:  test.py
from ctypes import *

mylib = CDLL("libtest.so")   或者   cdll.LoadLibrary("libtest.so")   
add = mylib.add
add.argtypes = [c_int, c_int] # 参数类型,两个int(c_int是ctypes类型,见上表)
add.restype = c_int # 返回值类型,int (c_int 是ctypes类型,见上表)
sum = add(3, 6)

  

若函数返回值为结构体类型,可参考下文链接所述,基本思想和上例类似:

http://www.linuxidc.com/Linux/2011-10/44838.htm

英文资料:ctypes documentation

https://docs.python.org/3/library/ctypes.html

    


IT人的微信自媒体--- 杰天空, 走在寻找创意的路上
发掘创意,点缀生活,品味人生。
请搜索微信订阅号: jksy_studio  ,或者微信扫描下图二维码添加关注


杰天空静候您的光临。


你可能感兴趣的:(Web开发)