在C调用Python模块时需要初始化Python解释器,导入模块等
但Python调用C模块却比较简单,ctypes模块提供了和C语言兼容的数据类型和函数来加载dll或so文件,因此在调用时不需对源文件做任何的修改
1.编写C语言代码,可参考 https://www.cnblogs.com/zhouzhishuai/p/9529487.html demo.c 编写。
2.接下来将C文件编译为.so
文件(或windows下为dll)输入 gcc demo.c -fPIC -shared -o libdemo.so
其中-shared代表这是动态库,-fPIC使得位置独立(如果程序本来就是独立的话会有警告,无视即可),-o指定了输出文件,改成dll后缀一样可以用。
此时在当前目录下就生成了libhello.so 的动态链接库
3.在Python编辑器里面输入以下代码,就可以看到控制台输出 3 了。
import ctypes
lib = ctypes.cdll.LoadLibrary('libdemo.so文件路径')
res = lib.add(1,2)
print(res)