windows和linux gcc生成动态链接库dll和so并用python调用
用C写一个函数,然后python调用C函数
add.c
#include <stdio.h> int add(int a, int b){ int t; t = a + b; printf("%d\n",t); return t; } /*int main(){ add(1,2); return 0; }*/
pyadd.py
Linux
import ctypes
obj = ctypes.CDLL(r"add.so")
ret = obj.add(99,101)
print(ret)
Windows
import ctypes
obj = ctypes.CDLL(r"add.dll")
ret = obj.add(99,101)
print(ret)
生成动态链接库
#For Windows
生成dll文件.
gcc -shared -o example.dll example.c
#gcc -shared -fpic add.c -o add.dll windows可以用和linux一样的命令编译dll
#For Linux
生成so文件
gcc -shared -fpic add.c -o add.so
运行结果:
#exer> python pyadd.py 200 200 #exer>
注意
如果报错:OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
查看gcc和python是多少位的,我的64 gcc和64 python汇报这个,windows系统也是64位,gcc默认生成的是32 bit的,所以我报这个错
把python换成32位就不会报错了
gcc生成dll时可以加参数-m32或-m64,不加参数默认是32位的
浙公网安备 33010602011771号