询问关于调用动态链接方库的方法 ( 积分: 50 )

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

laker6274

Unregistered / Unconfirmed
GUEST, unregistred user!
int Get_Next_Record(HANDLE icdev,LPINT Node_Addr,LPSTR Record_Data)
这样一个说明,用DELPHI声明的话
function Get_Next_Record(icdev:longint;Node_Addr:integer;var Recard_Data:string):integer;stdcall;
有没有问题?为什么老是报错呢?

在说明中 LPINT 和 int,LPSTR 与 str有什么区别
 
function Get_Next_Record(icdev:THandle;Node_Addr:PInteger;Recard_Data:PChar):Integer;stdcall;
 
调用的时候是不是用
var
record_str:string;
Node_addr:integer;
begin
Get_Next_Record(icdev,@Node_addr,@record_str);
end;
 
1.function Get_Next_Record(icdev:DWORD;Node_Addr:pinteger;Recard_Data:PChar):integer;stdcall;
2.function Get_Next_Record(icdev:DWORD;Node_Addr:pinteger;Recard_Data:array of char):integer;stdcall;
如果是VC写的DLL,一般VC程序员喜欢使用cdecl而不是stdcall
 
VC动态库说明:int Get_NodeTime(HANDLE icdev,LPSTR DateTime)
VB声明:Declare Function Get_NodeTime Lib "yccomm&quot
(ByVal icdev&, ByVal datetime$) As Long
VB调用:Dim strTime As String * 1000
intRet = Get_NodeTime(KQComHandle, strTime)
没有问题
Dephi声明:function Get_NodeTime(icdev:integer;DateTime:pchar):integer;stdcall;
function Get_NodeTime;external 'yccomm.dll';
delphi调用:var strTime:string;
intRet:=Get_Nodetime(icdev,pchar(strTime));
调用的时候就报错,出错在一个内存地址
 
function Get_NodeTime(icdev:integer;var DateTime:array of char):integer;stdcall;

var
P:array [0..1000-1] of char;
begin
StrTime:string;
intRet:=Get_Nodetime(icdev,P);
StrTime:=P;
end;
 
function Get_NodeTime(icdev:integer;DateTime:pchar):integer;stdcall;

delphi调用:
var strTime:array[0..255] of Char;

intRet:=Get_Nodetime(icdev,@strTime);
 

Similar threads

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