将char *从C ++ DLL获取到C#应用程序

时间:2015-11-10 11:14:05

标签: c# c++

我在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总是管理来自bufferStringBuilder description变量的字符串的enaugh内存吗?

我在声明中写ref,我应该添加{{1}}吗?

1 个答案:

答案 0 :(得分:2)

  

我的意思是StringBuilder总是会管理来自info到缓冲变量的字符串的足够内存吗?

您应该始终使用容量为

的构造函数指定StringBuilder的初始容量
int size = 256;
StringBuilder buffer = new StringBuilder(256);
fr = info(5, buffer, ref size);