如何利用python調(diào)用編譯好的dll庫(kù)?
python中可使用ctypes模塊調(diào)用dll文件中的庫(kù)函數(shù)。
例如一個(gè)dll文件“MyDll.dll”,其函數(shù)約定的調(diào)用方式為C調(diào)用(cdecl)方式,則Python中加載該dll文件的代碼如下:
若DLL函數(shù)的調(diào)用約定是標(biāo)準(zhǔn)調(diào)用約定(stdcall)方式,則DLL文件的加載代碼則改為:
dll = WinDLL('MyDll.dll')
下面給出幾種不同類(lèi)型的參數(shù)傳遞情況示例。
1、函數(shù)參數(shù)為數(shù)值情況
這是最簡(jiǎn)單的情況,設(shè)C語(yǔ)言函數(shù)聲明如下:
Python中調(diào)用方式為:
2、函數(shù)參數(shù)為指針情況
設(shè)C語(yǔ)言函數(shù)實(shí)現(xiàn)代碼如下:
Python中調(diào)用方式為:
也可以為:
3、函數(shù)參數(shù)為字符串情況
設(shè)C語(yǔ)言函數(shù)實(shí)現(xiàn)代碼如下,其功能是對(duì)于輸入pStr1賦值為“StrIn”,對(duì)于輸出返回一個(gè)指向字符串常量“strOut”的指針:
Python中調(diào)用方式為:
這兒只列舉了3種常見(jiàn)的參數(shù)傳遞情況,當(dāng)然還包括其它的,諸如傳遞結(jié)構(gòu)體、數(shù)值數(shù)組等類(lèi)型的情況,詳細(xì)情況可參考以前的文章。