0

私は 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つの質問があります

  1. Python(POINTER(_midlSAFEARRAY(c_double)))から参照渡しする引数を渡すにはどうすればいいですか?
  2. 実際の戻り値 (true/false) を取得するにはどうすればよいですか

サンジャイ

4

0 に答える 0