0
我在C++ DLL導出函數:獲得的char *從C++ DLL到C#應用程序
extern "C" int _stdcall info(int aError, char * description, int *aLen)
試圖從C#應用程序調用它。
聲明:
[DllImport("mydll.dll", CallingConvention = CallingConvention.StdCall)] public static extern int info(int aError, StringBuilder description, ref int length);
呼喚:
StringBuilder buffer = new StringBuilder();
fr = info(5, buffer, ref 256);
但從第一點似乎這個作品。但它真的很安全嗎?我的意思是將StringBuilder
總是管理enaugh內存的字符串來自info
到buffer
變量?
我在聲明中寫StringBuilder description
,應該加ref
嗎?
但我不過去了,也沒有問題。爲什麼? – vico
@vico字符串構建器具有初始容量(我不知道具體到底有多少),所以緩衝區可能已經足夠大了。 – vcsjones
並且在聲明中我寫'StringBuilder描述',我應該添加'ref' – vico