在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单.
下面还是以helloWorld.c 和 main.py 做说明:

1. 编写C代码,helloWorld.c

代码很简单,只是输出“Hello World!”:

#include <stdio.h>
int test()
{
    printf("Hello World!\n");
    return 0;
}

2. C代码编译成动态链接库

# gcc helloWorld.c -fPIC -shared -o libhello.so

此时在当前目录下就生成了libhello.so 的动态链接库libhello.so

3. 在main.py中导入动态链接库,并调用C函数

import ctypes
so = ctypes.CDLL('./libhello.so')
so.test()

这里的ctypes是Python的一个外部库,提供和C语言兼容的数据类型,以方便的调用C编译的静态库和动态库中的函数

4. 在终端下输入Python main.py

运行结果:
Hello World!
打印出helloWorld.c中的内容, 说明Python调用C模块成功!