【发布时间】:2014-12-10 18:26:16
【问题描述】:
我很好奇这个:
当我从使用 stdcall 调用约定导出的动态链接库导入函数时,是否必须在 external 之前添加 stdcall Delphi 从版本 7 开始?
即
LIBNAME int __stdcall Foo(void);
作为
function Foo: Integer; stdcall; external 'libname.dll';
或者我可以侥幸逃脱
function Foo: Integer; external 'libname.dll';
默认情况下,IIRC 会使用 stdcall,但我不能 100% 确定这一点,需要您的意见。
编辑:
这个问题与 32 位库有关,Arnaud Bouchez 提出了一个很好的观点,即对于 64 位,调用约定没有考虑在内,因为只有一个。
【问题讨论】:
-
您可以“摆脱”忽略该函数的调用约定,因为当有一个简单的返回类型且没有参数时,stdcall 和 register 的行为相同。
-
@RobKennedy 该死的例子!你说得对,实际上除了我导入的一个函数之外,所有函数都有 1 个或多个参数,谢谢你的提醒 Rob! (: