delphi的dll在VB里调用不对?
delphi写的dll
library Project1;
uses
SysUtils,
Classes;
function gmax(i1,i2:integer):integer;stdcall;
begin
if i1>i2 then
result:=i1
else
result:=i2;
end;
exports
gmax;
{$R *.res}
begin
end.
在delphi中调用结果正常,可是在VB中
Option Explicit
Private Declare Function gmax Lib "D:\Upload\Key\Project1.dll" (i1 As Long, i2 As Long) As Long
Private Sub Command1_Click()
Dim g1 As Long
Dim g2 As Long
g1 = 9
g2 = 108
MsgBox CStr(gmax(g1, g2))
End Sub
返回的居然是1242508而不是108,数据类型怎么对应,还是我写错了?
如果用integer,则返回负数,更不对了。
改怎么改?VB和DELPHI的数据类型哪儿有对应表?
问题点数:20、回复次数:4Top
1 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2003-06-01 14:49:33 得分 19
改为:Private Declare Function gmax Lib "D:\Upload\Key\Project1.dll" (ByVal i1 As Long, ByVal i2 As Long) As Long
VB默认是ByRef,传址,你把两个指针传给Delphi比较,当然返回出来的数字很大啦~~~~
Top
2 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2003-06-01 14:51:04 得分 1
这就不是对应不对应的问题。
VB中除了Byte以外,没有无符号整数。例如DWORD,WORD。
Top
3 楼mygis(小小)回复于 2003-06-01 16:16:49 得分 0
尤其谢谢Eastunfail(恶鱼杀手),呵呵,学艺不精、学艺不精呵Top
4 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2003-06-02 19:11:38 得分 0
什么尤其谢谢阿~~~~都是我回答的啊Top




