首先我是用delphi写了一个dll ,导出一个函数,然后delphi写的程序中调用这个导出的函数,通过pchar类型,通过函数传参数得到返回值。但是传出来的总是乱码?
dll中函数是这样写的:
声明:
function checkdll(temp1 : string; temp2:pchar ):Integer ;
实现
function checkdll;
const title = 'dfdf' ;
var
HsEdit1: THsEdit;
aa : Integer ;
str : string ;
bb :pchar ;
begin
Edit1 := TEdit.Create(nil);
Edit1.Text := temp1;
str := Edit1.Text ;
temp2 := pchar(str) ;
Edit1.Free ;
Result := 15 ;
end;
导出函数
uses
SysUtils,
Classes,
Testfunction in 'Testfunction.pas' {Form1},
dllunit in 'dllunit.pas';
{$R *.res}
exports
checkdll ;
调用
type
Tcheck = Function(str : string ; str2 : pchar ): Integer ; stdcall ;
procedure TForm2.btn1Click(Sender: TObject);
var
dll :THandle ;
p : Tcheck ;
cc : pchar ;
bb : Integer;
begin
dll := LoadLibrary(pchar('TestDll.dll')) ;
if dll <> 0 then
begin
@p := GetProcAddress(dll ,'checkdll') ;
if (@p <> nil) then
begin
GetMem(cc , 256) ;
bb := p(edt1.Text , cc) ;
edt2.Text := cc ;
end ;
end;
FreeMem(cc);
FreeLibrary(dll);
end;
这个问题该怎么解决啊?