Свяжите скрипт сборки с файлом ресурсов

Я пытаюсь связать свой сборочный скрипт с файлом ресурсов, созданным с помощью 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, чтобы отключить это поведение, так что, вероятно, это самый быстрый способ получить избавиться от него, чтобы изменить пакетный скрипт, добавив:

Другие вопросы по тегам