我想在C ++中编组一个结构,以便在C#中使用它。它包含嵌套类。当我调试时,我得到除嵌套类之外的数据。我是定制编组的新手,但如果有人可以帮助我如何开始,我会很高兴。我已阅读了很多文章,但他们都使用简单的示例行int并编组它们。自定义编组对我有很大的帮助,因为我有许多这样的结构要转换。
http://blogs.msdn.com/b/jaredpar/archive/2005/07/11/437584.aspx - 这个例子使用了int,我对我的第一个char * []
感到震惊我的c ++结构:
struct device
{
char Name[32];
char Port;
int type;
double Extention;
int Buttons[8];
double Matrix[4][4];
unsigned char expand[24];
}
struct InitializationParameters
{
char *SATELLITE[8];
double TOLERANCE;
BOOL AVERAGE_MODE;
int Use_DRF;
double BaseMatrix[4][4];
unsigned char expand[24];
Device MARKER[8];
};
我的C#类看起来像这样:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class InitilizationParameters
{
[MarshalAs(UnmanagedType.ByValArray,SizeConst = 8)]
public string[] SATELLITE=new string[8];
public double TOLERANCE;
[MarshalAs(UnmanagedType.Bool)]
public bool AVERAGE_MODE;
public int Use_DRF;
[MarshalAs(UnmanagedType.ByValArray,SizeConst = 4 * 4)]
public double[,] BaseMatrix=new double[4,4];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
public byte[] expand=new byte[24];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public Device[] MARKER=new Device[8];
}
除了嵌套的类类型之外,当与P / Invoke一起使用时,上面的编组为我提供了C ++方法中的所有数据。上述课程也是同样编组的