delphi调用vc写的DLL,为什么不能成功?接口该如何定义?(50分)

  • 主题发起人 dailydream
  • 开始时间
D

dailydream

Unregistered / Unconfirmed
GUEST, unregistred user!
snmpget(
char *ipaddress, char *oid, char *Value, int *ValueLength, int *state, int version = 1, char * Community = "public")
请问这个函数转换成delphi函数,该怎么定义参数?
 
procedure snmpget(
ipaddress : PChar;
oid : PChar;
Value : PChar;
var ValueLength: Integer;
var state : Integer;
version : Integer = 1;
Community : PChar = 'public');
 
to tseug:
我照你说的写了,可是编译的时候出来这个错误:
Constant expression expected.
 
估计是缺省参数的问题, 这样看看.
procedure snmpget(
ipaddress : PChar;
oid : PChar;
Value : PChar;
var ValueLength: Integer;
var state : Integer;
version : Integer;
Community : PChar);
 
你没懂tseug的意思,是这样:
声明时:
procedure snmpget(
ipaddress : PChar;
oid : PChar;
Value : PChar;
var ValueLength: Integer;
var state : Integer;
version : Integer;
Community : PChar);
调用时:
snmpget(.....,1,pchar('public'))
 
问题还没解决,算了,给分
 
非常感谢各位的帮助,终于搞定了.
函数是这样定义的:
type
PInteger = ^Integer;

procedure snmpget(ipaddress : Pchar;
oid : Pchar;
Value : Pchar;
ValueLength : PInteger;
State:pInteger;
VERSION : Integer;
const Community : PChar);
cdecl;
external 'snmp_pp.dll' name 'snmpget';
procedure TForm1.Button1Click(Sender: TObject);
var
ipaddress,oid,Value: array[0..999] of char;
ValueLength,State:pInteger;
begin
ipaddress := '172.24.224.10';
oid := '.1.3.6.1.2.1.1.1.0';
Value := '';
New(ValueLength);
ValueLength^ := 0;
New(State);
State^ := 0;
snmpget(ipaddress,oid,Value,ValueLength,State,1,'public');
if (State^ = 0) then
ShowMessage(Value);
Dispose(ValueLength);
Dispose(State);
end;
 

Similar threads

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