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 に変更するテストを行ったところ、さらに悪化しました (まったく実行されません)。どんな提案でも大歓迎です。