我继承了一些我需要与之交互的代码。具体来说,我想从 C# 调用一个 Marshaled 命令。代码调用如下所示;
[DllImport(DLL_PATH, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern void readTable([MarshalAs(UnmanagedType.LPArray)] ushort[,] buffer);
所以'readTable'命令填充了多维数组'buffer'。
我不能很好地做到这一点,但这是我的(非编译)尝试;
ushort[,] myTable = new ushort[5,100]; // multidimensional array
unsafe
{
fixed (ushort* inputPtr = &myTable[0, 0])
{
readTable(inputPtr);
}
}
显然没有编译,但我太新手了,无法修复错误。
我真的很想声明;
fixed(ushort[,]* inputPtr = &myTable)
但这只是无稽之谈。
有人了解我的困境吗?多谢!