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 @ 2024-11-22 16:01  我的腹肌不见了  阅读(138)  评论(0)    收藏  举报