C#调用C# dll时传的参数StringBuilder没法赋值
啊哈五个字 2017-02-17 05:38:12 我用C#写了个dll,用C++封装成了非托管dll,C++可以调用,C#也可以调用。现在问题来了,动态库里有个方法,比如
public static string Add(string x,StringBuilder sb)
{
string str = "";
//sb = new StringBuilder();
try
{
sb.Append(x);
}
catch(Exception ex)
{
str = ex.Message+" sb.Capacity:"+sb.Length;
return str;
}
return str;
}
然后用C#来调用
[DllImport(".\\ClassLibrary2.dll")]
public static extern string Add(string x,StringBuilder sb);
static void Main(string[] args)
{
string s = "1";
StringBuilder sb1 = new StringBuilder(1024);
s = Add("qwert",sb1);
Console.Write("sb1:"+sb1+"\n");
Console.Write("s:"+s);
}
会报错,报错位置在动态库里的 sb.Append(x) :
容量小于当前大小。参数名:requiredLength sb.Capacity:0
就是这个传的StringBuffer不知道为什么长度成0了,怎么弄都赋不上值,求各位大神们帮帮忙