2011-02-17 81 views
2

我與一個返回不透明指針的庫接口。子類c_void_p在ctypes中表示這種情況並提供對c_void_p這種特殊風格的類型檢查是否可接受?在ctypes中繼承c_void_p是否可以接受?

+0

您打算對庫函數的*返回值*進行類型檢查嗎?或者你想要做什麼? – 2011-02-17 15:19:55

+0

一個函數返回一個c_void_p,另一個函數接受它作爲它的參數。 – joeforker 2011-02-17 15:20:25

回答

0

一個簡單的方法來做到這一點的類型檢查可能會創建一些任意ctypes.Structure

class _Opaque(ctypes.Structure): 
    pass 

聲明的相關函數的返回類型爲指針,以這種結構

lib.f.restype = ctypes.POINTER(_Opaque) 

,要麼再次接受這種指針的函數的參數類型:

lib.g.argtypes = [ctypes.POINTER(_Opaque)] 

現在,​​確保g的參數是以前由f返回的指針。 (請注意,我使用了領先的_來標記_Opaque僅用於此模塊。)