C#调用Delphi Dll返回字符串的示例,使用Move才能拷贝字符串

//----------------------Delphi-------------------

procedure GetSqlData(ASource: PChar; ADest: PChar; ADestSize: Integer); stdcall;

var

S: string;

begin

if ASource = nilthen Exit;

S := Format('%s路过!',[ASource]);

Move(S[1], ADest^, Min(ADestSize, Length(S)+1));

end;{ GetSqlData }

exports

GetSqlData;

//----------------------C#-------------------

[DllImport(@"TempLib.dll")]

public static extern void GetSqlData(string ASource, StringBuilder ADest, int ADestSize);

private void button1_Click(object sender, EventArgs e)

{

StringBuilder vDest = new StringBuilder(1024);

GetSqlData("Zswang", vDest, 1024);

Text = vDest.ToString();

}

http://blog.csdn.net/zswang/article/details/1615264