私は COM プログラミングに非常に慣れていません。私たちのプロジェクトでは、C# で記述された COM dll と通信するために Python スクリプトが必要です。
Python で生成された COM 署名は次のとおりです。
COMMETHOD([dispid(1610743820)], HRESULT, 'test',
( ['in', 'out'], POINTER(_midlSAFEARRAY(c_double)), 'test' ),
( ['retval', 'out'], POINTER(VARIANT_BOOL), 'pRetVal' )),
同じためのC#コードはどこにありますか
public bool test(ref double[,] test)
{
if (test == null)
test = new double[1,2];
test[0,0] = 0.0;
test[0,1] = 0.5;
return true;
}
注:上記は、問題を説明するために作成したダミー関数です
Python から COM メソッドを呼び出そうとすると、メソッド (sweepValuesX) への参照によって渡された値のみが戻り値として取得され、実際の戻り値 (true/false のいずれかである必要があります) は取得されません。
私の関数呼び出しは以下の通りです
print apxWrapper.test()
出力は ((0.0, 0.5),)
注: Python から最後の引数を渡す方法を見つけることができなかったので、試行目的で最後の引数を省略しました
これが起こっている理由のヒントは非常に高く評価されているか、具体的には2つの質問があります
- Python(POINTER(_midlSAFEARRAY(c_double)))から参照渡しする引数を渡すにはどうすればいいですか?
- 実際の戻り値 (true/false) を取得するにはどうすればよいですか
サンジャイ