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位的

 

posted @   腹肌猿  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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装饰器
点击右上角即可分享
微信分享提示