python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...
關(guān)于gcc編譯dll的我就不說了,網(wǎng)上舉例一大堆,下面以g++為例。
假設(shè)有一個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中可以這樣調(diào)用生成的dll文件:
import ctypes
dll = ctypes.cdll.LoadLibrary('test.dll') #加載動態(tài)鏈接庫
f=dll.add #提取函數(shù)
f.argtypes=[ctypes.c_double,ctypes.c_double] #定義參數(shù)類型
f.restype=ctypes.c_double #定義函數(shù)返回值類型
f(2.5,3.5) #計算
顯示的結(jié)果為:
6.0
注意:加載的時候要根據(jù)你將要調(diào)用的函數(shù)是符合什么調(diào)用約定的。
stdcall調(diào)用約定:兩種加載方式
Objdll = ctypes.windll.LoadLibrary("dllpath")
Objdll = ctypes.WinDLL("dllpath")
cdecl調(diào)用約定:也有兩種加載方式
Objdll = ctypes.cdll.LoadLibrary("dllpath")
Objdll = ctypes.CDLL("dllpath")
下面的這個文章寫得不錯,還講到了結(jié)構(gòu)體:
總結(jié)
以上是生活随笔為你收集整理的python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dj打碟怎么学_学DJ打碟 - Rane
- 下一篇: python 退出程序_Python:用