c#怎么定义结构体中的二维数组
我在c++中定义了一个这样的结构
typedef struct Field55
{
	char ctag[100][5];
	int iLen[100];
	char cValue[100][512];
}ICINFOTEMP;
然后再c#中这样定义
public struct ICINFO  
     {
         [MarshalAsAttribute(UnmanagedType.ByValArray,SizeConst = 100*5)]
         public string [] tag;
         [MarshalAsAttribute(UnmanagedType.ByValArray,SizeConst = 100)]
         public int [] Len;
         [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 100 * 512)]
         public string [] Value;
     }
编译时报错“内部限制:结构太复杂或太大”。请问大大,该如何修改?
------解决方案--------------------
封送多维(2维以上)的数组,一直是互操作的难题!远非4楼所说那么简单,根据以往经验,我总结了一个办法:
 将数组尾数扁平化,变成一维数组,以楼主的结构体中 char cValue[100][512];为例:
1、定义子结构体:
 [StructLayout(LayoutKind.Sequential)]
 public struct str
 {
 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
 public string name;
 }
2、外层结构体:对于C++:
 [StructLayout(LayoutKind.Sequential)]
 public struct ICINFO  
 {
 ............
 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)] [b]//注意:这里对应一维数组[/b]   
  public str[] name;
 }