注册 登录
编程论坛 Delphi论坛

delphi调用vc的dll的问题(函数返回值为char*)

冰凝1984 发布于 2007-05-01 11:32, 2501 次点击

我在vc的dll中定义了一个函数:
char* _stdcall Get_HardDriveSerialNumber()
{
return HardDriveSerialNumber;
}
该函数的功能是返回硬盘的某个参数。其中,HardDriveSerialNumber的值在dll内部获得。

然后我在delphi中这样调用:
var
Form1: TForm1;
function Get_HardDriveSerialNumber():pchar;stdcall;far;external 'read_disk.dll';
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a:pchar;
begin
a:=Get_HardDriveSerialNumber();
edit1.Text:=a;
end;

按理说vc的char*和delphi的pchar应该是对应的啊,但是不知道为什么a的值为空

3 回复
#2
网络骑士hkc2007-05-02 03:40

用pointer试试
function Get_HardDriveSerialNumber:pointer;stdcall;far;external 'read_disk.dll';

var
buf:array[0..50] of char;
p:pointer;
begin
p:=Get_HardDriveSerialNumber;
copymemory(@buf[0],p,50);
edit1.Text:=a;
end;

#3
冰凝19842007-05-03 08:08
还是不行呢。
#4
冰凝19842007-05-03 19:12
明白了:是我的dll本身的问题。
1