【问题标题】:Include files for MASM x64包含 MASM x64 的文件
【发布时间】: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 CreateFileAcall CreateFileA 或其他任何东西。
  • @pet stdio.h 包含实现。这与仅包含 声明 的 .inc 文件有很大不同。声明你需要的符号 - 可以说 - 是可行的。另一方面,实施(部分)CRT 的过程要复杂得多。不是真的和苹果对苹果的类比。主要的一点是,了解这些工具比追随推荐的做事方式要重要得多,而不了解它们的作用,或者为什么推荐这样做。
  • @pet 仍然是一个非常糟糕的类比。如果您正在学习汇编,那么您肯定不会这样做,因为它可以提高您的工作效率。你这样做纯粹是为了教育方面。申报进口当然是有教育意义的。不管怎样,我在评论一个毫无疑问是错误的陈述,而不是在推荐编写汇编应用程序的方式。

标签: windows assembly visual-studio-2019 x86-64 masm


【解决方案1】:

所以我一直在做一些挖掘工作,据我了解,没有用于 x64 MASM 的官方 SDK,这很奇怪。我确实找到了这个论坛"The MASM Forum"。他们在x64 MASM SDK 上工作了一段时间,但它有很多功能。

他们说这并不完美,但总比没有。 老实说,我在安装时遇到了麻烦,而且我的防病毒软件也将其中 2 个文件归类为木马,因此您应该自行承担下载文件的风险(也许在 VM 上进行?)。

此外,问题下的 cmets 建议创建您自己的 .inc 文件,据我所知,这并不难,我将尝试这两种方法,并根据结果更新这篇文章。

【讨论】:

    【解决方案2】:

    我不确定您是否仍然需要答案,可能自从差不多一年前就有人问过这个问题以来,我会回复以帮助任何可能也想知道的人。我刚开始尝试学习 MASM 并且在设置所有内容时遇到了很多麻烦,实际上我仍在努力让 x86 在 USB 上正常工作(我认为 masm32 必须位于 USB 的根目录(注意:对于旧版本,更新版本将更像 x64))

    对于 x64,您需要安装 Visual Studio,我使用的是 VS 2022。我的示例应该会给您一个好主意,只需更改以匹配您的特定设置。

    ml64.exelink.exelib.exe都在同一个文件夹中:

        C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\Hostx64\x64\ml64.exe
    

    资源编译器rc.exe位于不同的文件夹

        C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\rc.exe
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多