[問題] C++ dll傳遞含有char array的struct
我手上有一個C++寫的dll
現在在C#寫的程式內使用這個dll
在這個dll內有一個struct
typedef struct _A
{
WCHAR buf[64];
DWORD index;
} A;
會被當成function的參數傳遞
int funA(A *a)
{
a.buf...;
index = ...;
}
現在我想在C#內叫用funA
[DllImport("Mydll.dll", CallingConvention = CallingConvention.StdCall, CharSet
= CharSet.Unicode)]
public static extern int funA(IntPtr a);
有先確認過dll確實有值在buf裡面
但是不管怎樣都沒有辦法得到buf的內容
在猜想會不會是memory沒有正確傳遞?
想請教一下該如何才能正確將dll傳的值抓出來呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.36.2
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1433490441.A.6ED.html
推
06/07 04:49, , 1F
06/07 04:49, 1F
→
06/07 20:51, , 2F
06/07 20:51, 2F
→
06/07 20:51, , 3F
06/07 20:51, 3F
推
06/09 16:36, , 4F
06/09 16:36, 4F
→
06/09 16:37, , 5F
06/09 16:37, 5F
→
06/09 16:38, , 6F
06/09 16:38, 6F
→
06/09 16:39, , 7F
06/09 16:39, 7F
→
06/09 16:39, , 8F
06/09 16:39, 8F
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章