1

我正在尝试将我的汇编脚本与使用 ResEdit 制作的资源文件链接起来,这两个文件都属于与 .bat 文件相同的目录:

@echo off
C:\masm64\ml64.exe dialog_box.asm /link /entry:Main resources.res /subsystem:windows /defaultlib:"C:\masm64\kernel32.Lib" /defaultlib:"C:\masm64\user32.Lib" /defaultlib:"C:\masm64\ComCtl32.Lib" /LARGEADDRESSAWARE:NO
 pause

结果,我得到了 .exe 文件,该文件应该在屏幕上显示一个对话框,但打开它后什么也没有发生。链接后我也得到了一些不会正常进行的快捷方式文件(当我在链接期间没有使用任何 .res 文件时)。我不确定我做错了什么。我也尝试使用cvtres.exe将 .res 文件转换为 .obj 文件并将其替换为 .bat 文件,但结果是相同的。汇编代码是正确的,因为我是从书中复制的。

4

1 回答 1

0

我还尝试使用 cvtres.exe 将 .res 文件转换为 .obj 文件并在 .bat 文件中替换它,但结果是一样的。

我假设您一直认为需要编译此资源文件,但 .rc 和 .res 文件之间存在显着差异。.rc 文件只是一个资源脚本,而 .res 文件是已经编译好的资源文件。链接时,您需要编译文件才能生成最终的可执行文件。

请确保您在脚本中使用了正确的标识符,因为这很可能是您看不到输出的原因。此外,请确保您提供了 dll 链接器需要的适当路径。

关于链接器创建的快捷方式文件,我设法重现了它,但我不太确定它的目的是什么,我也找不到 Microsoft 文档中的任何开关来关闭此行为,所以可能是最快的方法摆脱它是通过添加修改批处理脚本:

del mllink$.lnk

于 2022-02-03T19:32:12.873 回答