我該如何定義一個具有動態大小數組的結構體?將動態大小數組編組爲結構體
是嗎?
struct MyStruc {
public int len;
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)]
public int buf[];
}
我該如何定義一個具有動態大小數組的結構體?將動態大小數組編組爲結構體
是嗎?
struct MyStruc {
public int len;
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)]
public int buf[];
}
假設你想要一個包含指向數組的指針的結構。
聲明指針數組作爲IntPtr
並用Marshal.AllocHGlobal
手動編組數組內容,Marshal.Copy
等
假設希望一個可變尺寸的結構,而不是包含指向數組的結構體。
您不能使用p/invoke編組變量大小的結構。您至少有以下兩種選擇:
Marshal.AllocHGlobal
手動,Marshal.Copy
等好吧,我明白了,但我不想用IntPtr在c#中工作:(但是我想,我沒有其他辦法。 –
我的兩個假設中的哪一個是正確的。顯示C++聲明的類型會有幫助 –
實際上,我使用的是dll,但我沒有dll代碼,但是我有dll的struct定義,像這樣定義:struct MyStruc {int_len; int buf [1]; } –
什麼是 '動態大小的數組'?數組像「列表」? –
user3449857
你將不得不使它成爲'IntPtr'或者'不安全'(後者可能更容易讓事情正常工作)。 – leppie
我不能使用列表,因爲在c + +大小的定義,如int * –