我正在使用從unmanged本地庫到我的託管C#代碼的回調。 回調函數是在頭文件中聲明:對原生dll的封鎖回調
typedef void* (TNotice)(wchar_t *msg, bool error);
回調字符串參數msg.I不KHOW,爲什麼不C#中工作的聲明:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr CallbackDelegate([MarshalAs(UnmanagedType.LPWStr)]string msg, bool error);
但是聲明:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr CallbackDelegate([MarshalAs(UnmanagedType.LPWStr)]StringBuilder msg, bool error);
工作正常。
對我來說,語法看起來正確。除了...在C#中,你說你的函數返回一些指針,而在C++聲明中返回'void'。這不應該是問題,但誰知道。請說明你有什麼樣的行爲 - 什麼手段「不起作用」。 – Zoka 2013-04-11 12:29:43