簡體   English   中英

將char *從C ++ DLL獲取到C#應用程序

[英]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始終管理來自infobuffer變量的字符串的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM