我有一個C#的問題。我試圖調用以下C++方法。如何在c#中的內存中直接創建結構?
void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo);
我想用x AfwPropertInfo結構創建一個內存塊。我不知道如何直接在記憶中做對方。
任何人都可以幫助我嗎?
我有一個C#的問題。我試圖調用以下C++方法。如何在c#中的內存中直接創建結構?
void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo);
我想用x AfwPropertInfo結構創建一個內存塊。我不知道如何直接在記憶中做對方。
任何人都可以幫助我嗎?
你實際上有一個數組。我想到的是,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);
感謝您的快速回答。我的方法屬於一個對象。該方法如何知道它屬於哪個對象? – user3107989
您無法調用/調用實例方法。只有非成員函數或靜態函數。 –
您是否嘗試過使用'AfwPropertyInfo [2]'創建一個結構數組? –