2

double 配列を最初のパラメーターとして受け取り、最初のパラメーターに基づいて別の倍精度配列を返す .net C# 関数があります。

C# コード

public int testMath(double[] InputSet, double[] OutputSet)
{
    // more complicated than what I am showing but
   for (int i = 0; i < 3; i++)
   {
      OutputSet[i] = InputSet[i] * 2.0;
   }
   return 1;  // Really something else
}

PHP

$mathTest = new DOTNET("MathTest,"
        ."Version=1.0.0.0,"
        ."Culture=neutral,"
        ."PublicKeyToken=213536b1e6bb8ea5"
        , "MathTest.MathTest");

$inputValue = Array();
$outputValue = Array();

for ($i = 0; $i < 3; $i++){
  $inputValue[$i] = $i * 3.0;
  $outputValue[$i] = 0.0;
}

$status = $mathTest->testMath($inputValue, $outputValue);

これを実行しようとすると、パラメーター 1 が型の不一致であるというエラーが表示されます。
double を入力として受け取り、期待どおりに機能する ref 出力を使用する他のルーチンがあります。このルーチンを他のプログラミング言語から呼び出すことはできますが、PHP で動作させる方法については困惑しています。com_print_typeinfo を使用してパラメーターを表示しようとしたところ、両方の引数が VT_SAFEARRAY と IN として表示されることがわかりました。引数 1 を OUT に変更するテストを行ったところ、さらに悪化しました (まったく実行されません)。どんな提案でも大歓迎です。

4

1 に答える 1

1

最も単純なアプローチは、double 配列を json としてエンコードすることです。

phpから

json_encode ($myarr);

また

  json_decode ($myarr); // if u want the other direction

そして、それをc#でキャッチして(またはその逆)、デコードします。json.net や jsonFx などを使用できます。

于 2013-05-24T14:00:19.430 に答える