ctypes使用教程

來源:魅力女性吧 1.2W
ctypes使用教程

ctypes提供了三種調用動態庫的對象:cdll、windll、oledll。

其中cdll主要用來加載C語言調用方式,windll主要用來加載WIN32調用方式,而oledll使用WIN32調用方式且返回值是Windows裏返回的HRESULT值。

從而實現在python代碼中調用C函數的功能。是不是很神奇。

ctypes內置函數,不需要安裝

from ctypes import * # 導入

CDLL('/usr/local/lib/', mode=_GLOBAL) # 加載。

so動態庫,mode=_GLOBAL實現如果調用的動態庫有其它依賴庫時,提前加載的功能

libc = Library('/opt/bin/lib/') # 例如,依賴了上述庫,就需要加載庫為全局加載

DeviceId = [0x00] * 8

DeviceId = (c_ubyte * 8)(*DeviceId) # 這個是之前比較傻的做法,因為要先給這個變量分配一段地址,其實這裏用

tartInfo(byref(DeviceId)) # 調用C語言接口函數 GenStartInfo

deviceId = ctypes.c_void_p()

DeviceId = ter(deviceId)

tartInfo(DeviceId) # 使用指針即可

byref(n)返回的相當於C的指針右值&n,本身沒有被分配空間

pointer返回的相當於指針左值T* p=&n,可以改變,可以取地址

這樣就完成了最基本的調用C接口函數的功能

有時候希望打印出來,但如果返回值不對的時候,打印總是出錯,於是寫了一個打印函數

熱門標籤