ctype Linux所以库Pointer TypeError

时间:2019-03-07 22:37:12

标签: python arguments function-pointers ctypes

我正在使用.so加载C库(ctypes文件)。然后我设置参数并调用一个函数,并得到以下错误;

ctypes.ArgumentError: argument 4: <class 'TypeError'>: expected LP_c_ushort instance instead of _ctypes.PyCSimpleType

我猜想这与第三行末尾的POINTER定义有关。你能帮忙吗?

import ctypes
mylib = ctypes.cdll.LoadLibrary('./libfocas32.so')
mylib.cnc_allclibhndl3.argtypes = ctypes.c_wchar_p, ctypes.c_ushort, ctypes.c_long, ctypes.POINTER(ctypes.c_ushort)
mylib.cnc_allclibhndl3.restype = ctypes.c_long
h = ctypes.c_ushort
ret = mylib.cnc_allclibhndl3('192.168.1.1',9000,1,(h))

1 个答案:

答案 0 :(得分:1)

(1)h必须接收类型为c_ushort的实例,因此:

h = ctypes.c_ushort()

(2)假设仅在函数调用期间使用指向h的指针,并且不应将其存储更长的时间,请使用

ret = mylib.cnc_allclibhndl3('192.168.1.1',9000,1,ctypes.byref(h))