推 Litfal: 你有在C#裡面定義struct _A並建立unmanaged記憶體再傳嗎? 06/07 04:49
→ petercoin: C#內我有定義struct A了 但是unmanaged的記憶體要怎麼 06/07 20:51
→ petercoin: 宣告 可否幫忙給個關鍵字? 06/07 20:51
推 Litfal: Marshal.StructureToPtr 06/09 16:36
→ Litfal: 另外你給的資訊不夠,重要的C#端如何定義struct你都沒給 06/09 16:37
→ Litfal: 依據定義方式不同,欄位可能需要用MarshalAs的屬性去標記 06/09 16:38
→ Litfal: 還有,你的buf究竟是C++去alloc後傳址給C#、還是C#就alloc 06/09 16:39
→ Litfal: 完成,lib端只負責填滿記憶體,都會影響到寫法 06/09 16:39
Hi Litfal,
不好意思,
因為對C#其實不是很熟悉,
因此沒有給到足夠的資訊。
C#端的struct我找了很多方法去對應WCHAR,
後來是寫成
public struct A
{
public IntPtr buf;
public uint index;
}
另外我的buf是在C++端alloc,
然後把取到的資訊填入buf之後回傳給C#,
不知道在這種狀況下該怎麼處理位置的傳遞?
其實目前在這個案例裡,
我是把struct內的資料拆成兩個當作參數傳遞,
但是考量到未來可能需要擴充struct內的資料,
這種方式彈性太小了,
所以還是想要了解如何處理這種問題,
還煩請各位不吝指教,
謝謝各位。
※ 編輯: petercoin (36.229.39.51), 06/09/2015 23:34:21