Свяжите скрипт сборки с файлом ресурсов
Я пытаюсь связать свой сборочный скрипт с файлом ресурсов, созданным с помощью 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, но результат был тот же. Код сборки правильный, так как я скопировал его из книги.
1 ответ
Я также пытался использовать cvtres.exe для преобразования файла .res в файл .obj и замены его на файл .bat, но результат был таким же.
Я предполагаю, что вы думали, что этот файл ресурсов должен быть скомпилирован, но существует значительная разница между файлами .rc и .res. Файл .rc — это просто сценарий ресурсов, а файл .res — это уже скомпилированный файл ресурсов. При связывании вам необходимо иметь скомпилированные файлы для создания окончательного исполняемого файла.
Убедитесь, что вы используете правильные идентификаторы в своем скрипте, потому что это, скорее всего, причина, по которой вы не видите вывод. Кроме того, убедитесь, что вы указали соответствующие пути к необходимым библиотекам DLL.
Что касается файла ярлыка, созданного компоновщиком, мне удалось воспроизвести его, и я не совсем уверен, какова его цель, и я не смог найти какой-либо переключатель в документации Microsoft, чтобы отключить это поведение, так что, вероятно, это самый быстрый способ получить избавиться от него, чтобы изменить пакетный скрипт, добавив: