在python中呼叫dll檔案中的介面比較簡單,例項**如下:
如我們有乙個test.dll檔案,內部定義如下:
extern"c
"}
在python中我們可以用以下兩種方式載入1.
import
ctypes
dll
=ctypes.windll.loadlibrary(
'test.dll')
2.import
ctypes
dll
=ctypes.windll(
'test.dll')
其中ctypes.windll為ctypes.windll類的乙個物件,已經在ctypes模組中定義好的。在test.dll中有test介面,可直接用dll呼叫即可
nrst
=dll.test( )
nrst
由於在test這個介面中需要傳遞兩個引數,乙個是void型別的指標,它指向乙個緩衝區。乙個是該緩衝區的長度。因此我們要獲取到python中的字串的指標和長度
#方法一:
sbuf ='
aaaaaaaaaabbbbbbbbbbbbbb
'pstr
=ctypes.c_char_p( )
pstr.value
=sbuf
pvoid
=ctypes.cast( pstr, ctypes.c_void_p ).value
nrst
=dll.test( pvoid, len( pstr.value) )
#方法二:
test = dll.test
test.argtypes = [ctypes.c_char_p, ctypes.c_int]
test.restypes = ctypes.c_int
nrst = test(sbuf, len(sbuf))
如果修改test.dll中介面的定義如下:
extern"c
"}
由於介面中定義的是cdecl格式的呼叫,所以在python中也需要用相應的型別1.
import
ctypes
dll
=ctypes.cdll.loadlibrary(
'test.dll')
##注:一般在linux下為test.o檔案,同樣可以使用如下的方法:
## dll = ctypes.cdll.loadlibrary('test.o')2.
import
ctypes
dll
=ctypes.cdll(
'test.dll')
python呼叫dll方法
在python中呼叫dll檔案中的介面比較簡單,例項 如下 如我們有乙個test.dll檔案,內部定義如下 extern c 在python中我們可以用以下兩種方式載入1.import ctypes dll ctypes.windll.loadlibrary test.dll 2.import ct...
python呼叫dll詳解
參考鏈結 windows安裝mingw w64教程 公司業務需要,讓我用python呼叫領導寫好的dll庫,經過一段時間的研究,終於呼叫成功,特此來記錄一下過程 開發環境win10 python3.6.8 64位 安裝這個的目的是生成dll檔案用,參考位址在上面,講一下注意的點。安裝的時候versi...
python呼叫dll動態庫
python呼叫動態庫有兩種型別,主要看dll的匯出函式的呼叫約定 stdll和 cdecl 對應的動態庫的呼叫方式為 ctypes.cdll.loadlibrary test.dll 對應 cdecl呼叫方式 ctypes.windll.loadlibrary test.dll 對應 stdll呼...