一个调用C的DLL问题?(50分)

  • 主题发起人 主题发起人 可儿
  • 开始时间 开始时间

可儿

Unregistered / Unconfirmed
GUEST, unregistred user!
一个用C写的DLL,函数名为
int ReadZmgd(HANDLE hComm,char code[2],char buf[1024]);
我用
function ReadZmgd(Han:Hwnd;Code:PChar;buf:pchar):integer;cdecl;external 'OneDLL.dll' name 'ReadZmgd';
来调用,老是出现地址错误。请问,怎么解决?
 
如下两种声明分别试验一下呢?
function ReadZmgd(hComm: THandle;
code: PChar;
buf: PChar): Integer;
stdcall;external 'OneDLL.dll'
function ReadZmgd(hComm: THandle;
code: PChar;
buf: PChar): Integer;
cdecl;external 'OneDLL.dll'
 
不行,是这个样子,我传入一个Buf,在DLL中需要付值,然后我再读出来。
 
C中的指针类型,我在Delphi中怎么调用?
 
帮你提提。
 
不清楚怎么回事,谢谢大家的参与
 
function ReadZmgd(Han:Hwnd;Code:PChar;buf:pchar):integer;cdecl;external 'OneDLL.dll' name 'ReadZmgd';

改为:
function ReadZmgd(hComm: Pointer;
Pcode: Pointer;
Pbuf: Pointer): Integer;
stdcall;external 'OneDLL.dll'
在调用函数时对指针参数初始化
Pcode:=@code;
Pbuf:=@buf;
就可以了。

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
893
import
I
后退
顶部