我正在通过comtypes模块从 Python 使用第 3 方 C++ 库(通过 COM 导出类型库)。
可用调用之一定义了一个 OUT 参数,如下所示:
COMMETHOD([helpstring(u'method GetPacket')], HRESULT, 'GetPacket',
( ['in'], comtypes.gen._00020430_0000_0000_C000_000000000046_0_2_0.GUID, 'guid' ),
( ['in'], c_int, 'lSize' ),
( ['out'], POINTER(c_ubyte), 'pData' )),
库作者提供的 C++ 示例代码在调用 之前初始化pData
为长度为字节的数组,如下所示:lSize
GetPacket()
pPacket = new BYTE[lSize];
HRESULT hr = pData->GetPacket(guid, lSize, pPacket);
但是,Python 的 comtypes 库不提供传递初始值的方法pData
-- 并且,在调用没有初始值的库时,解释器会立即出现段错误。
是否可以从 Python 与这个库进行互操作——理想情况下,从comtypes
?