2013-12-16 51 views
3

我有一個C#的問題。我試圖調用以下C++方法。如何在c#中的內存中直接創建結構?

void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo); 

我想用x AfwPropertInfo結構創建一個內存塊。我不知道如何直接在記憶中做對方。

任何人都可以幫助我嗎?

+0

您是否嘗試過使用'AfwPropertyInfo [2]'創建一個結構數組? –

回答

5

你實際上有一個數組。我想到的是,C++代碼如下所示:

void SetPropertyInfoList(int count, AfwPropertyInfo* propertyInfo); 

現在,AfwPropertyInfo*沒有完全指定參數是什麼。它可能是一個指向單個AfwPropertyInfo結構體的指針。或者它可以是一組AfwPropertyInfo。顯然在這種情況下,它是後者。

更改的P/Invoke的聲明是這樣的:

[DllImport(...)] 
static extern void SetPropertyInfoList(
    int count, 
    AfwPropertyInfo[] propertyInfo 
); 

創建結構的數組:

AfwPropertyInfo[] propertyInfo = new AfwPropertyInfo[count]; 

,然後調用非託管函數之前初始化數組的成員:

SetPropertyInfoList(propertyInfo.Length, propertyInfo); 
+0

感謝您的快速回答。我的方法屬於一個對象。該方法如何知道它屬於哪個對象? – user3107989

+0

您無法調用/調用實例方法。只有非成員函數或靜態函數。 –

相關問題