【发布时间】:2011-04-15 10:57:17
【问题描述】:
我在做 C++ --> C# 互操作的东西,我有一堆像俄罗斯套娃一样相互包含的结构。问题是这些“嵌套”之一采用固定长度数组的形式:
typedef struct tagBIRDREADING
{
BIRDPOSITION position;
BIRDANGLES angles;
BIRDMATRIX matrix;
BIRDQUATERNION quaternion;
WORD wButtons;
}
BIRDREADING;
typedef struct tagBIRDFRAME
{
DWORD dwTime;
BIRDREADING reading[BIRD_MAX_DEVICE_NUM + 1];
}
BIRDFRAME;
按照hallowed teachings of Eric Gunnerson,我在 C# 中执行了以下操作:
[StructLayout(LayoutKind.Sequential, Pack = 0)]
public struct BIRDREADING
{
public BIRDPOSITION position;
public BIRDANGLES angles;
public BIRDMATRIX matrix;
public BIRDQUATERNION quaternion;
public ushort wButtons;
}
[StructLayout(LayoutKind.Sequential, Size = 127)]
public struct BIRDREADINGa
{
public BIRDREADING reading;
}
public struct BIRDFRAME
{
public uint dwTime;
public BIRDREADINGa readings;
}
我的问题是,我如何访问包含在 BIRDREADINGa 和 BIRDFRAME 中的 BIRDREADING 的 127 个实例中的每一个?还是我犯了严重的错误?
【问题讨论】:
标签: c# arrays pinvoke marshalling struct