delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
动态连接库中的函数,解释后出现问题,求救!!! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061129092530151.html
我有个动态连接库,还有c的头文件,我把翻译成Delphi的时候出现了点问题,大家帮忙看看啊:  
  LONG   WINAPI   XPosition(ULONG   iIndex);    
  float   XReadOut(ULONG   iIndex);    
   
  这两个函数,C的头文件里面的,翻译成D的函数后如下:  
  function     XPosition(iIndex   :   Longword)   :   longint;stdcall;external   'CardDLL.dll';  
   
  function     XReadOut(iIndex   :   Longword)   :   Single;stdcall;external   'CardDLL.dll';    
   
  不知道这样翻译有没有问题?    
   
  因为我现在遇到这样的情况,凡是C中函数名前有WINAPI的,翻译成D的函数后都好用,凡是没有WINAPI的,都出现内存读取错误???

是调用惯例上的差异,你把不带WINAPI的调用惯例改成cdecl

function     XReadOut(iIndex   :   Longword)   :   Single;stdcall;external   'CardDLL.dll';    
  改为  
  function     XReadOut(iIndex   :   Longword)   :   Single;cdecl;external   'CardDLL.dll';    
   
  ......说明  
   
  cdecl:       c\c++缺省的参数传递方式        
  stdcall:   WinAPI的参数传递方式

DELPHI   HELP:  
   
  The   cdecl   convention   is   useful   when   you   call   functions   from   shared   libraries   written   in   C   or   C++,

刚才查了查,什么参数传递方式的问题,修改后就好了,谢谢!

posted on 2008-11-27 21:13 delphi2007 阅读(197) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。