網站首頁 美容小常識 享受生活 東方時尚 識真假 高奢 資訊 遊戲攻略 搞笑段子
當前位置:品位站 > 享受生活 > 心理

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接口函數的功能

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

Tags:ctypes