C# 将数组传递到互操作程序集

C# 将数组传递到互操作程序集,c#,arrays,struct,interop,unmanaged,C#,Arrays,Struct,Interop,Unmanaged,我在LabVIEW中创建了一个.NET互操作程序集,该程序集对输入数组执行数学函数,并将结果写入两个输出数组。签名为: void CFit(Array Input__32Array, out Array Output__32Array, out Array Result__32Array) 在C#中,输入数组实际上是一个结构数组,其他两个输出数组是二维数组。如果我用这个 double[,] OutputArray = new double[1650, 2]; // Output1 double

我在LabVIEW中创建了一个.NET互操作程序集,该程序集对输入数组执行数学函数,并将结果写入两个输出数组。签名为:

void CFit(Array Input__32Array, out Array Output__32Array, out Array Result__32Array)
在C#中,输入数组实际上是一个结构数组,其他两个输出数组是二维数组。如果我用这个

double[,] OutputArray = new double[1650, 2]; // Output1
double[,] ResultArray = new double[20, 6]; // Output2
IData[] iData; //Input array

CFit( iData ,out ResultArray, out OutputArray);
编译器抛出错误-错误CS1503参数1:无法从“reflect\u UI.iData[]”转换为“reflect.CFit.Input\uuuuuuuu32array\uuuu32[]”*

IData结构在C中定义如下#

问题:如何将输入数组(结构数组)传递到此互操作程序集


这是我的第一篇文章。我将感谢任何帮助。提前感谢。

根据CFit的定义,它需要数组类型参数。您需要将Idata输入转换为数组类型。有关数组类的更多信息,请在MSDN上找到。请发布LabView为相关程序集生成的所有相关接口代码。是否尝试使用结构而不是类?StructLayoutAttribute在引用类型上不是很有用。LabVIEW只生成签名-void CFit(数组输入\uuuu32Array、数组输出\uuu32Array、数组结果\uuu32Array)以及IData?你试过把它做成一个结构吗?
[StructLayout(LayoutKind.Sequential, Pack = 0)]
public class IData
{
    [MarshalAs(UnmanagedType.R4)]
    public float L;
    [MarshalAs(UnmanagedType.I4)]
    public int D;
    [MarshalAs(UnmanagedType.R4)]
    public float S;
    [MarshalAs(UnmanagedType.I2)]
    public short I;
    [MarshalAs(UnmanagedType.I2)]
    public short C;
}