C++结构二维数组到C#

问题描述:

可能重复:
What does “Invalid managed/unmanaged type combination.” mean?C++结构二维数组到C#

我们将如何在C#

typedef struct tagBIRDMATRIX 
{ 
short n[3][3]; // array of matrix elements 
}BIRDMATRIX; 
+0

你是否收到错误信息?如果是这样,请给我们这些信息。否则,请查阅.Net pInvoke上的文档。 – 2011-06-01 07:14:34

+0

Merlyn Morgan-Graham你说的对,它有一些相似之处。让我编辑我的问题。关于那个... ... – LMC008 2011-06-01 07:21:04

大小编码这些结构(用C++)应该是交叉产品中元素的数量。

struct BIRDMATRIX 
{ 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)] 
    short[,] n; 
} 
+0

整洁的技巧,我试图使用'固定'与良好的'多维数组,但不编译。但是,你可以做这样的事情,比如固定短时间[3 * 3],但你真的更好。 – 2011-06-01 07:28:25

+0

它出现错误,“错误坏数组声明符:要声明托管数组,声明一个固定大小的缓冲区字段,请在字段类型之前使用fixed关键字。 – LMC008 2011-06-01 07:31:26

+0

@John,是啊,尽量远离C#中的固定和指针,如果你可以帮助它。他们在一种不会像两岁大的孩子那样对待你的语言中很方便,但是当你在c#中需要他们时通常会感到很痛苦。我喜欢.NET,但有时候,我只是想让我的指针回来。 – 2011-06-01 07:33:51