首页 > 编程语言 > 详细

python调用C函数

时间:2021-08-08 11:23:27      阅读:17      评论:0      收藏:0      [点我收藏+]

python可以用ctypes库调用C函数

1.生成.dll或.so文件(windows下),linux下是.o文件

//pycall.c
#include <stdio.h> #include <stdlib.h> int foo(int a, int b)
{
  printf("you input %d and %d\n", a, b);
  return a+b;
}

生成dll文件.

gcc -Wall -shared pycall.c -o pycall.dll

或者

gcc --share pycall.c -o pycall.dll

生成so文件.

gcc -o pycall.so -shared -fPIC pycall.c

2.ctypes调用

#下面是加载dll方法:
#stdcall调用约定:两种加载方式 :Objdll = ctypes.windll.LoadLibrary("dllpath")和Objdll = ctypes.WinDLL("dllpath")
#cdecl调用约定:也有两种加载方式:Objdll = ctypes.cdll.LoadLibrary("dllpath")和Objdll = ctypes.CDLL("dllpath")
import ctypes
#1
ll = ctypes.cdll.LoadLibrary("./pycall.so")
ll1=ctypes.cdll.LoadLibrary("./pycall.dll")
#2
ll3=ctypes.windll.LoadLibrary("./pycall.so")
ll4=ctypes.WinDLL("./pycall.dll")
#3
ll5=ctypes.CDLL("./pycall.so")
ll6=ctypes.CDLL("./pycall.dll")

ll1.foo(2,4)
ll3.foo(5,6)
ll4.foo(7,8)
ll5.foo(9,10)
ll6.foo(11,12)
print( ***finish***)
***finish***
you input 2 and 4
you input 5 and 6
you input 7 and 8
you input 9 and 10
you input 11 and 12

 

python调用C函数

原文:https://www.cnblogs.com/pfeiliu/p/15113894.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!