使用MASM 64bit时的LNK1104

时间:2018-09-19 17:01:21

标签: 64-bit intel masm masm64

我目前正在尝试学习x64 Windows的Assembly。我尝试了this Intel website中的示例代码, 但是只要我尝试使用文档中给出的命令对其进行编译:

ml64 hello.asm /link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user32.lib /entry:Start

我总是得到

  

LNK1104错误

我知道这意味着编译器无法找到库文件,我在问题上进行了搜索,很快发现我需要Visual Studio和Windows SDK(已下载并安装)。但是在Windows系统文件以外的任何文件中仍然找不到kernel32.libuser32.lib

我尝试了所有事情,但根本无法解决。我希望有人可以帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

hutch--创建了一个著名的MASM32 SDK available。此软件包包含(旧式)32位版本的请求的库。

但是hutch--也对该著名软件包进行了64位更新::
Current build of the 64 bit MASM SDK
它应包含您需要的.inc.lib文件以及更多...

  

这是64位MASM SDK的当前版本。这一步非常接近完成,并且添加了正确的Microsoft二进制文件,它能够构建各种应用程序类型。可以以2种不同的方式使用它,应该从要安装它的分区的根目录中将其解压缩。您可以将其手动添加到MASM32 SDK的安装中,也可以将其安装在没有MASM32的分区上,只需将buildx64目录重命名为MASM32。将其安装在另一个分区上是首选方法,因为QE的菜单和附件已设置为构建64位代码。

     

您仍然需要添加Microsoft二进制文件,该文件通常来自vs2017的安装或Win7 64的早期版本。bin64目录中有一个名为“ Microsoft_File_List.txt”的文件,其中显示了所需的文件。该列表来自Visual Studio 2017版本的当前版本,如果这是您拥有的版本,请使用“ x86_amd64”目录中的ML64,其大小为402,584字节。

     

在“ buildx64”目录中是一个名为“ makeall.bat”的批处理文件。必须运行此命令以构建所有库并包含文件。

它们是Windows组件开发的黄金标准。