2011-06-01 171 views
2

可能重複:
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

回答

6

大小編碼這些結構(用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