所以我试图读取一个无符号短数组,它由我正在使用的 c 库中的 void 指针返回。头文件中的函数定义是这样的:
void* Foo(int a, int b)
这个函数最终返回一个指向 unsigned short 类型数组的指针。
在 python 中,我一直在尝试使用 ctypes 返回数组但没有成功。这是我所拥有的:
import ctypes
import numpy as np
libc = ctypes.cdll.LoadLibrary("Library.dll")
Vec=np.zeros((1000,),dtype=np.uint16)
c_ushort_p = ctypes.POINTER(ctypes.c_ushort)
Vec_p=confVec.ctypes.data_as(c_ushort_p)
libc.Foo.restype = ctypes.c_void_p
Vec_p=libc.Foo(1,1)
print Vec_p
这将返回“无”。
如果我尝试:
...
libc.Foo.restype = ctypes.c_void_p
Vec_p=libc.Foo(1,1)
print Vec_p[0]
我得到 TypeError: 'NoneType' 对象没有属性 ' getitem '。
我也试过这个:
...
libc.Foo.restype = ctypes.c_void_p
Vec_p=ctypes.cast(libc.Foo(1,1),c_ushort_p)
print Vec_p
返回,其中 print Vec_p[0] 给出“ValueError:NULL 指针访问”
谁能给我任何帮助?