参考来源:
delphi写的dll,Pchar 传参数,c#要怎样声明_津津有味道的博客-优快云博客
unit Unit1;
interface
uses
SysUtils;
function StrAddStr(inpustr:PChar ;Var OutPutstr:PChar):Integer;stdcall;
implementation
function StrAddStr(inpustr:PChar ;Var OutPutstr:PChar):integer;stdcall;
var
str1:string;
begin
str1:=inpustr;
OutPutstr:=Pchar(str1+str1);
result:=0;
end;
end.
library Project1;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas';
{$R *.res}
exports
StrAddStr;
begin
end.
[DllImport("project1.dll", EntryPoint = "StrAddStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
static extern int StrAddStr(string inputstr,ref IntPtr outputstr);
string inputstr="中国人yes";
IntPtr outputs = Marshal.AllocHGlobal(255); //参数传入,申请内存空间
int real=StrAddStr(inputstr,ref outputs);
Marshal.PtrToStringAnsi(outputs).ToString(); //获取地址内信息