我有一个 .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 是类型不匹配。
我还有其他例程将双精度数作为输入并通过 ref 输出按我的预期工作。我可以从其他编程语言调用这个例程,但我不知道如何让它在 PHP 中工作。我尝试使用 com_print_typeinfo 查看参数,发现两个参数都显示为 VT_SAFEARRAY 作为 IN。我做了一些测试以将参数 1 更改为 OUT 并且它使情况变得更糟(根本不会运行)。任何建议将不胜感激。