读书人

小弟想一个delphi调用DLL的有关问题

发布时间: 2012-05-09 12:13:59 作者: rapoo

小弟想请教各位一个delphi调用DLL的问题,谢谢!
同为一个Singer.dll中的函数在PB中引用为:
function boolean getserialno(ref string serialno,long size) library "Signer.dll" alias for "GetSerialNo"
可以正常调用

而小弟在Delphi中引用为:
function getserialno( var serialno:string ; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo';
---------
然后调用函数:

procedure TForm1.getserialnobtnClick(Sender: TObject);
var sn:string;
begin
getserialno(sn,256);
end;

编译通过,但调用总是出错,难道问题在于delphi的sting类型和pb的 ref string 的不同?我也尝试使用过pchar、pansichar代替string,也是同样的问题。但小弟调用其它没有 ref string的函数都是没问题的,请问各位高人如何解决?
小弟是新手,请各位前辈不吝指点,小弟先谢谢了~

[解决办法]

Delphi(Pascal) code
function getserialno( var serialno:PAnsiChar; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo';function GetSN: string;var  sn:array [0..256] of AnsiChar;begin  ZeroMemory(@sn,SizeOf(sn));   getserialno(@sn,256);  result :=sn;end;
[解决办法]
function getserialno( var serialno:string ; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo';
Delphi调用Dll基本都是PAnsiChar;生命时候就要生命成PAnsiChar;
[解决办法]
探讨

function getserialno( var serialno:PAnsiChar; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo'; function GetSN: string; var sn:array [0..256] of AnsiChar; begin ZeroMemory……

读书人网 >.NET

热点推荐