當包裝用CFUNCTYPE
型Python函數,我已經發現,非指針類型被自動轉換爲雖然他們value
屬性被調用。防止自動類型轉換回調函數
我怎樣才能抑制這種自動轉換?
from ctypes import *
funcspec = CFUNCTYPE(c_int, c_int, POINTER(c_int))
@funcspec
def callback(the_int, the_int_p):
print(vars())
return 3
print(callback(c_int(1), byref(c_int(2))))
將會產生(python3
cfunctype_type_conversion.py
):
{'the_int': 1, 'the_int_p': <__main__.LP_c_int object at 0x2671830>}
3
我想:
{'the_int': c_int(1), 'the_int_p': <__main__.LP_c_int object at 0x2671830>}
c_int(3)
這麼做並不是完全相同CFUNCTYPE的目的是什麼? ctypes的目的是與C-API接口並從C類型和Python類型來回轉換。你不應該保留c_int的東西,直接用它們做事。例如,您不能將c_int添加到另一個c_int。 – 2011-06-08 09:47:54