[英](C#) AccessViolationException when getting char ** from C++ DLL
[英]Getting char * from C++ DLL to C# application
我已經在C ++ DLL中導出了函數:
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
始終管理來自info
到buffer
變量的字符串的enaugh內存嗎?
我在聲明中編寫StringBuilder description
,應該添加ref
嗎?
我的意思是,StringBuilder將始終為從信息到緩沖區變量的字符串管理足夠的內存嗎?
您應該始終通過使用具有以下容量的構造函數來指定StringBuilder的初始容量:
int size = 256;
StringBuilder buffer = new StringBuilder(256);
fr = info(5, buffer, ref size);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.