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位的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
2022-11-22 python打包工具distutils
2022-11-22 pip离线安装
2022-11-22 C语言中文乱码
2019-11-22 mysql数据库E-R图
2019-11-22 python装饰器