我在C ++ DLL中导出了函数:
[DllImport("mydll.dll", CallingConvention = CallingConvention.StdCall)] public static extern int info(int aError, StringBuilder description, ref int length);
尝试从C#应用程序调用它。
声明:
StringBuilder buffer = new StringBuilder();
fr = info(5, buffer, ref 256);
通话:
StringBuilder
从第一个角度看,这似乎有效。但它真的安全吗?我的意思是info
总是管理来自buffer
到StringBuilder description
变量的字符串的enaugh内存吗?
我在声明中写ref
,我应该添加{{1}}吗?
答案 0 :(得分:2)
我的意思是StringBuilder总是会管理来自info到缓冲变量的字符串的足够内存吗?
您应该始终使用容量为
的构造函数指定StringBuilder的初始容量int size = 256;
StringBuilder buffer = new StringBuilder(256);
fr = info(5, buffer, ref size);