delphi如何调用VC编写的dll函数(50分)

  • 主题发起人 主题发起人 lukee
  • 开始时间 开始时间
L

lukee

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个vc下编的dll函数,声明如下:
extern __declspec(dllexport) int test(char* demo)

用delphi怎么声明这个dll函数?传什么参数?如果返回的是指针,我怎么接收?
 
静态调用可以了
在implementation之前声明
function test(demo:pchar):integer;stdcall;external 'XXXX.dll';

就像普通函数一样用
 
谢谢 pcexplorer,成功了。但我还有一个问题,为什么不能声明为 ^char ,
delphi会报错,说不认识 “^”。

如果变量是一个结构体指针,我怎么声明变量?
 
一般在调用Dll中的函数时应该传递指针,因为直接传递地址可以直接操作改变数据

type
PMyRecord=^TMyRecord;

TMyRecord=record
FHandle:THandle;
FName:pchar;
end;
传递时可以用PMyRecord类型
function GetFileName(MyRecord:PMyRecord):integer;stdcall;
var
s:string;
AHandle:THandle;
begin
result:=1;
AHandle:=MyRecord^.FHandle;
s:=StrPas(MyRecord^.FName);
MyRecord^.FName:='Ok';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecord:TMyRecord;
begin
MyRecord.FHandle:=100;
MyRecord.FName:=pchar('welcome');
GetFileName(@MyRecord);
end;
在Dll中最好用pchar类型,如果用string类型则必须将sharemem引用在Dll中的uses的第一个单元
当你创建一个Dll时Delphi中的注释的意思就是这样
实际上pchar只是一个指针,所以你必须使用之前分配内存如
var
pstr:pchar;
begin
GetMem(pstr,100);
try
//using pstr here
finally
FreeMem(pstr,100);
end;
end;
有几本好书建议你看一看
《Delphi5开发人员指南》,《Delphi4核心编程技术》

 
不能直接用 ^char
正确的用法如下
type
PAChar=^Char;

procedure TForm1.Button1Click(Sender: TObject);
type
PAChar=^Char;
var
C:PAChar;
begin
C^:='A';
caption:=C^;
end;
Delphi中我常用pchar,pchar实际是个指针

《Delphi5开发人员指南》中有关于字符串的详细讲解
 
谢谢,我明白了。你能告诉我你的邮箱吗?我的邮箱是 tocjun@371.net。
 
后退
顶部