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