And*_*i S 3 c c# pinvoke stringbuilder dllimport
在一个C#文件中,我有一个
class Archiver {
[DllImport("Archiver.dll")]
public static extern void archive(string data, StringBuilder response);
}
Run Code Online (Sandbox Code Playgroud)
字符串数据是一个输入,StringBuilder响应是函数写入的东西
归档函数原型(用C编写)如下所示:
void archive(char * dataChr, char * outChr);
Run Code Online (Sandbox Code Playgroud)
它在dataChr中接收一个字符串,然后执行一个
strcpy(outChr,"some big text");
Run Code Online (Sandbox Code Playgroud)
从C#我称之为:
string message = "some text here";
StringBuilder response = new StringBuilder(10000);
Archiver.archive(message,response);
Run Code Online (Sandbox Code Playgroud)
这是有效的,但问题是,你可能会看到我给StringBuilder大小赋值,但是归档函数可能会返回一个比我给我的StringBuilder大小更大的文本.有任何解决这个问题的方法吗?
你需要编写一个函数来告诉你需要多大StringBuilder,然后调用该函数来初始化StringBuilder.