python引用DLL文件的方法
本文實(shí)例講述了python引用DLL文件的方法。分享給大家供大家參考。具體分析如下:
在python中調(diào)用dll文件中的接口比較簡(jiǎn)單,如我們有一個(gè)test.dll文件,內(nèi)部定義如下:
extern "C"
{
int __stdcall test( void* p, int len)
{
return len;
}
}
在python中我們可以用以下兩種方式載入
1.
import ctypes dll = ctypes.windll.LoadLibrary( 'test.dll' )
2.
import ctypes dll = ctypes.WinDll( 'test.dll' )
其中ctypes.windll為ctypes.WinDll類的一個(gè)對(duì)象,已經(jīng)在ctypes模塊中定義好的。在test.dll中有test接口,可直接用dll調(diào)用即可
nRst = dll.test( ) print nRst
由于在test這個(gè)接口中需要傳遞兩個(gè)參數(shù),一個(gè)是void類型的指針,它指向一個(gè)緩沖區(qū)。一個(gè)是該緩沖區(qū)的長度。因此我們要獲取到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"
{
int __cdecl test( void* p, int len)
{
return len;
}
}
由于接口中定義的是cdecl格式的調(diào)用,所以在python中也需要用相應(yīng)的類型
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' )
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python光學(xué)仿真學(xué)習(xí)wxpython創(chuàng)建手速測(cè)試程序
這篇文章主要介紹了python光學(xué)仿真學(xué)習(xí)使用wxpython創(chuàng)建一個(gè)手速測(cè)試程序示例的實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
Python?pyecharts?數(shù)據(jù)可視化模塊的配置方法
Echarts 是一個(gè)由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可,這篇文章主要介紹了Python?pyecharts?數(shù)據(jù)可視化模塊,需要的朋友可以參考下2022-09-09
python通過pip更新所有已安裝的包實(shí)現(xiàn)方法
下面小編就為的帶來一篇python通過pip更新所有已安裝的包實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
如何準(zhǔn)確判斷請(qǐng)求是搜索引擎爬蟲(蜘蛛)發(fā)出的請(qǐng)求
我們的網(wǎng)站經(jīng)常被各種蜘蛛爬蟲光顧,由于這些爬蟲都有UserAgent,所以很多朋友使用UserAgent判斷請(qǐng)求的發(fā)起者是否是搜索引擎爬蟲的方式是很不準(zhǔn)確的,接下來,通過本篇文章給大家介紹準(zhǔn)確判斷請(qǐng)求是搜索引擎爬蟲(蜘蛛)發(fā)出的請(qǐng)求的方法,需要的朋友可以參考下2015-10-10
python實(shí)現(xiàn)幾種歸一化方法(Normalization Method)
這篇文章主要介紹了python實(shí)現(xiàn)幾種歸一化方法(Normalization Method),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python操作MySQL簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了Python操作MySQL簡(jiǎn)單實(shí)現(xiàn)方法,通過一個(gè)簡(jiǎn)單的實(shí)例講述了Python針對(duì)mysql數(shù)據(jù)庫的增刪改查技巧,需要的朋友可以參考下2015-01-01

