动态连接库中的函数,解释后出现问题,求救!!!

wzn0521 2006-11-29 09:25:30
我有个动态连接库,还有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的,都出现内存读取错误???
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzn0521 2006-11-29
  • 打赏
  • 举报
回复
刚才查了查,什么参数传递方式的问题,修改后就好了,谢谢!
老冯 2006-11-29
  • 打赏
  • 举报
回复
DELPHI HELP:

The cdecl convention is useful when you call functions from shared libraries written in C or C++,
老冯 2006-11-29
  • 打赏
  • 举报
回复
function XReadOut(iIndex : Longword) : Single;stdcall;external 'CardDLL.dll';
改为
function XReadOut(iIndex : Longword) : Single;cdecl;external 'CardDLL.dll';

......说明

cdecl: c\c++缺省的参数传递方式
stdcall: WinAPI的参数传递方式
老冯 2006-11-29
  • 打赏
  • 举报
回复
是调用惯例上的差异,你把不带WINAPI的调用惯例改成cdecl

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧