python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...
關于gcc編譯dll的我就不說了,網上舉例一大堆,下面以g++為例。
假設有一個test.cpp文件如下:
extern "C" {
__declspec(dllexport) double add(double x,double y);
}
double add(double x,double y){
return x+y;
}
在MinGW中使用g++編譯:
g++ -shared -Wl,--kill-at,--output-def,test.def -o test.dll test.cpp
在python中可以這樣調用生成的dll文件:
import ctypes
dll = ctypes.cdll.LoadLibrary('test.dll') #加載動態鏈接庫
f=dll.add #提取函數
f.argtypes=[ctypes.c_double,ctypes.c_double] #定義參數類型
f.restype=ctypes.c_double #定義函數返回值類型
f(2.5,3.5) #計算
顯示的結果為:
6.0
注意:加載的時候要根據你將要調用的函數是符合什么調用約定的。
stdcall調用約定:兩種加載方式
Objdll = ctypes.windll.LoadLibrary("dllpath")
Objdll = ctypes.WinDLL("dllpath")
cdecl調用約定:也有兩種加載方式
Objdll = ctypes.cdll.LoadLibrary("dllpath")
Objdll = ctypes.CDLL("dllpath")
下面的這個文章寫得不錯,還講到了結構體:
總結
以上是生活随笔為你收集整理的python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dj打碟怎么学_学DJ打碟 - Rane
- 下一篇: python 退出程序_Python:用