3

私はサードパーティのC++ライブラリ(COM経由でtypelibをエクスポート)をPythonからcomtypesモジュール経由で使用しています。

使用可能な呼び出しの1つは、次のように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に長さのバイト配列に初期化されます。lSizeGetPacket()

pPacket = new BYTE[lSize];
HRESULT hr = pData->GetPacket(guid, lSize, pPacket);

ただし、Pythonのcomtypesライブラリは、pData-の初期値を渡す方法を提供していません。初期値なしでライブラリを呼び出すと、インタプリタはすぐにsegfaultを実行します。

Pythonからこのライブラリと相互運用することは可能ですか?理想的には、からcomtypesですか?

4

1 に答える 1