gpt4 book ai didi

delphi - 导入函数需要 stdcall 吗?

转载 作者:行者123 更新时间:2023-12-03 15:20:22 26 4
gpt4 key购买 nike

我对此很好奇:

当我从使用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。因此,您必须包含该 stdcall

您使用external这一事实不会改变任何事情。默认调用约定是 register,即使对于外部导入也是如此。

当然,这只在编译 32 位时才重要。在 x64 Windows 上,ABI 中指定了一个调用约定。 。在 x64 Windows 上,代码中指定的所有调用约定都将被忽略,所有函数调用均使用 Windows x64 调用约定进行。

关于delphi - 导入函数需要 stdcall 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com