python引用DLL檔案的方法

2022-09-28 18:42:12 字數 1237 閱讀 8501

在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( )

print nrst

由於在test這個介面中需要傳遞兩個引數,乙個是void型別的指標,它指向乙個緩衝區。乙個是該緩衝區的長度。因此我們要獲取到python中的字串的指標和長度

#方法一:

sbuf = 'aaaaaaaaaabbbbbbbbbbbbbb'

pstr = ctypes. )

p程式設計客棧str.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 ctypes.c_int]

test.restypes = ctypes.c_int

nrst = test(sbuf, len(sbuf))

如果修改test.dll中介面的定義如下:

extern "c"

}由於介面中定義的是cdecl格式的呼叫,所以在p程式設計客棧ython中也需要用相應的型別

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檔案的方法

本文位址:

C 引用dll檔案路徑問題

在呼叫非託管的dll檔案時,net是無法引用的,這個時候我們就需要用到dllimport來引用 using system.runtime.interopservices dll檔案。這個時候dllimport引用dll的路徑是這樣需找的,首先從當前應用程式bin目錄,然後system32資料夾下面尋...

python檔案引用

python的檔案儲存型別跟c c沒多大差別 介紹一下 開啟模式 執行操作 r 以唯讀方式開啟檔案 預設 w 以寫入的方式開啟檔案,會覆蓋已存在的檔案 x 如果檔案已經存在,使用此模式開啟將引發異常 a 以寫入模式開啟,如果檔案存在,則在末尾追加寫入 b 以二進位制模式開啟檔案 t 以文字模式開啟 ...

dll的弱引用和強引用

先描述下dll的建立方法 test.h和test.cpp cpp view plain copy print pragma once ifdef common define common export declspec dllexport else define common export decl...