我有一个C方法,我试图从Python调用
OVR_EXPORT void ovrHmd_EndEyeRender(ovrHmd hmd, ovrEyeType eye,
ovrPosef renderPose, ovrTexture* eyeTexture)
在python方面,它声明如下:
for _lib in _libs.itervalues():
if not hasattr(_lib, 'ovrHmd_EndEyeRender'):
continue
ovrHmd_EndEyeRender = _lib.ovrHmd_EndEyeRender
ovrHmd_EndEyeRender.argtypes = [hmd, ovrEyeType, pose, POINTER(texture)]
ovrHmd_EndEyeRender.restype = None
break
我这样称呼它:
ovrHmd_EndEyeRender(self.hmd, eye, p, pointer(t))
然而,它没有达到预期的效果。在Python和C中我添加了一些调试日志记录:
的Python:
print 'address:', ctypes.addressof(t), type(t)
C:
OVR_DEBUG_LOG(("addressof texture: %d", eyeTexture));
在我的控制台输出中,我得到了不同的值:
address: 48163936 <class 'oculusvr.struct_ovrTexture_'>
Debug: addressof texture: 488341928
通过指针传递值的其他包装函数似乎工作正常。此外,问题似乎只发生在我的Windows环境中。在Linux中,应用程序可以运行。
任何人都知道会出现什么问题?