gpt4 book ai didi

c++ - 外部 "C"未按预期工作

转载 作者:行者123 更新时间:2023-11-28 01:09:27 26 4
gpt4 key购买 nike

我正在尝试 Hook Win32 API 函数。我正在制作一个 DLL,我想从中导出函数,但我已经在基础上失败了。我的声明如下:

extern "C" __declspec(dllexport) int WINAPI fnTest(void);

但导出的函数名称不是“fnTest”——如我所料——而是“_fnTest@0”。我只能在将函数调用约定声明为 __cdecl 时使其工作,这会导致导出名称“fnTest”,但由于 Win32 调用连接是 WINAPI/__stdcall这不是一个选择。

我正在使用 VS2010。提前致谢。

最佳答案

该重整是 __stdcall 约定的一部分。由于被调用函数有责任在返回时从堆栈中删除参数,并且从堆栈中删除错误数量的数据会造成灾难性的后果,因此参数占用的字节数只是简单地附加到函数名的“@”之后让链接器捕获潜在的冲突定义错误。

您能具体解释一下,这怎么会造成问题?

关于c++ - 外部 "C"未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172509/

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