delphi--vc++ 调用dll的问题(100分)

  • 主题发起人 主题发起人 Toysun
  • 开始时间 开始时间
T

Toysun

Unregistered / Unconfirmed
GUEST, unregistred user!
同一个dll里面同一个函数,vc++里面正常返回,delphi就没有返回值
怎么这么奇怪呢?我看了下汇编,看不懂........这是什么原因呢?
哪位大哥给点建议?..........

vc++:
POINT pt= fpGetLedPos();
m_X = pt.x;
m_Y = pt.y;
UpdateData(FALSE);
delphi:
var
pt:TPoint;
begin
pt:=fpGetLedPos;
edtX.Text := IntToStr(pt.x);
edtY.Text := IntToStr(pt.y);
end;
 
是不是声明问题呀,能否把两个声明贴出来
 
dll是用什么做的,是不是调用约定没设为stdcall
 
代码不全,无法鉴定。
 
delphi:
function fpGetLedPos(x:Integer;y:Integer):ByteBool;stdcall;//接口部分
function fpGetLedPos:TPoint;external 'LedCtrl.dll' name 'LSN_GetLedPos';//实现部分

vc++:
fpGetLedPos= (LSN_GETLEDPOS)GetProcAddress(g_hLedCtrlInst, "LSN_GetLedPos");
 
dll没有代码,[:(]
 
VC++里的LSN_GETLEDPOS是怎样定义的?
 
不好意思,现在才看到,是这样的
typedef POINT (WINAPI *LSN_GETLEDPOS)(void);
 
注意调用方式,最好是两边都用stdcall
delphi默认的好象是fastcall,还有个cdecl
调用方式必须匹配,否则行不通
 
多人接受答案了。
 
后退
顶部