【发布时间】:2021-03-28 11:37:53
【问题描述】:
我是 Windows MASM 应用程序编程的新手,据我了解,为了调用 WinAPI 函数,我需要首先包含适当的 .inc 文件。
我使用的是 Visual Studio 2019,但在我的系统 windows.inc 文件中找不到任何地方。我已经
在线搜索,我找不到任何适用于 x64 MASM 的 SDK。
有人问过这个问题ago,但答案只与 x32 程序集有关。
【问题讨论】:
-
“据我了解,为了调用 WinAPI 函数,我需要首先包含适当的 .inc 文件” - 不,这不是必需的。您需要使汇编器可以看到函数名称,并让链接器知道要解析哪些导入。 .inc 文件可以做到这一点,但它们不会做任何你自己做不到的事情。如果你想学习汇编,首先要学习你的工具(这实际上适用于任何编程语言)。
-
@IInspectable:好吧,公平地说,你可以对 C 和
stdio.h说同样的话。当然,您可以自己制作所有函数的原型,但没有人会建议您这样做,即使大多数原型都由 C 标准保证。同样公平的是,很高兴了解您可以这样做,特别是对于通常您必须自己管理调用约定的 asm。 -
而 IIRC,MASM 可能不支持它的
invoke指令或 x64 的宏。如果这是真的,那么可能根本就没有.inc文件,而您只需要在保留影子空间并将 args 放入寄存器后使用extern CreateFileA和call CreateFileA或其他任何东西。 -
@pet
stdio.h包含实现。这与仅包含 声明 的 .inc 文件有很大不同。声明你需要的符号 - 可以说 - 是可行的。另一方面,实施(部分)CRT 的过程要复杂得多。不是真的和苹果对苹果的类比。主要的一点是,了解这些工具比追随推荐的做事方式要重要得多,而不了解它们的作用,或者为什么推荐这样做。 -
@pet 仍然是一个非常糟糕的类比。如果您正在学习汇编,那么您肯定不会这样做,因为它可以提高您的工作效率。你这样做纯粹是为了教育方面。申报进口当然是有教育意义的。不管怎样,我在评论一个毫无疑问是错误的陈述,而不是在推荐编写汇编应用程序的方式。
标签: windows assembly visual-studio-2019 x86-64 masm