Python使用ctypes调用C

1、为什么要使用Python调用C语言

C的性能更高

 

2、Python调用C语言的步骤

(1)将.c文件编译为动态库文件,即.so文件

如果是Windows,可以安装MinGW,它是在Windows上可以使用的GNU工具和库的集合,包含gcc,g++等。

# 将C源码文件demo.c编译为动态库文件demo.so,在Windows、Linux上都是这个命令,亲测
gcc demo.c -shared -o demo.so

(2)使用ctype加载动态库文件,然后就可以调用C文件中的函数了

import ctypes

# 或者用ctypes.cdll.LoadLibrary('./demo.so')
demolib = ctypes.CDLL('./demo.so')

 

3、Python调用C语言实例演示

(1)编写 demo.c文件,实现一个求1-100的和的函数,代码如下:

#include <stdio.h>

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

(2)将demo.c源码文件编译为动态库文件demo.so

gcc demo.c -shared -o demo.so

(3)编写Python文件

import ctypes

# 或者用ctypes.cdll.LoadLibrary('./demo.so')
demolib = ctypes.CDLL('./demo.so')


def test_add():
    demolib.add.argtypes = [ctypes.c_int, ctypes.c_int]
    demolib.add.restype = ctypes.c_int
    r = demolib.add(1, 2)
    print(f'test_add, sum: {r}')

if __name__ == '__main__':
    test_add()

(4)执行 python3 demo.py 这里在python文件中也同样可以拿到C源码函数的返回值

E:\test> python demo.py
test_add, sum: 3
E:\test>

 

参考文章:Python----Python调用C语言方法

 

posted @ 2024-01-11 22:03  奋斗终生  Views(70)  Comments(0Edit  收藏  举报