問題很簡單,想從託管C#代碼讀取字符串到我的非託管C++代碼WCHAR* []
。 C函數是:從C#託管代碼讀取字符串到C++ wchar * []越來越AccessViolation
extern "C" __declspec(dllexport) int __cdecl myfunc(int argc, WCHAR* argv[])
,並在C#我導入的DLL:
[DllImport("mydll.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
public static extern int myfunc(int argc, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder str);
我跑,但是當我試圖讀取串在我的C++代碼,我得到AccessViolationException : Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
什麼是正確的方法來做到這一點,反之亦然(即傳遞字符串從C託管非託管C#託管代碼)?
幫助讚賞。 謝謝
C#端應該可能使用StringBuilder。 – 2011-12-22 12:38:34
弗拉德是正確的。 C函數需要一個指向WCHAR的指針數組。 – jlvaquero 2011-12-22 13:29:07