そのため、使用している C ライブラリの void ポインターによって返される unsigned short 配列を読み込もうとしています。ヘッダーの関数定義は次のようになります。
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' object has no attribute ' 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 ポインター アクセス」を返します。
誰でも私に何か助けてもらえますか?