1

我已经使用 DUMPBIN 转储了一个 Windows SDK .lib 文件 (kernel32.lib),输出显示每个 API 名称都有两个“版本”,例如:

_imp _ExitProcess @4

_ExitProcess@4

那么,为什么会有两个相同但名称不同的 mangling 呢?. 假设我想从 NASM 调用 ExitProcess,我应该在声明 EXTERN 时使用它们中的哪一个?,我的实践告诉我我可以调用它们中的任何一个,但我不知道哪个是“正确”或“首选”坚持下去。

4

1 回答 1

2

我认为该_imp_版本旨在与__declspec(dllimport)Visual C++ 编译器一起使用,以防止与同一模块中的代码发生潜在冲突。

您不应该在代码中明确使用该事实 - 只需使用原始函数,即_ExitProcess@4.

于 2011-12-29T04:06:36.850 回答