Можно ли в Windows, используя gcc mingw, указать, что выходной exe-файл должен принимать файл значка, чтобы exe-файл отображался с этим значком в проводнике?
Можно ли в Windows, используя gcc mingw, указать, что выходной exe-файл должен принимать файл значка, чтобы exe-файл отображался с этим значком в проводнике?
Ответы:
Сначала вам нужно создать значок. Затем вам нужно создать RC-файл со следующим содержимым. Здесь мы назовем его my.rc
.
id ICON "path/to/my.ico"
id
Указано выше в команде может быть в значительной степени все. Это не имеет значения, если вы не хотите ссылаться на него в своем коде. Затем запустите windres следующим образом:
windres my.rc -O coff -o my.res
Затем при создании исполняемого файла вместе с другими объектными файлами и файлами ресурсов включите их, my.res
которые мы получили на предыдущем шаге. например:
g++ -o my_app obj1.o obj2.o res1.res my.res
И это должно быть все, что нужно сделать.
И, без дополнительной оплаты, если вы хотите включить информацию о версии в свое приложение, добавьте следующий шаблон в новый .rc
файл и выполните указанные выше действия.
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904E4"
BEGIN
VALUE "CompanyName", "My Company Name"
VALUE "FileDescription", "My excellent application"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "my_app"
VALUE "LegalCopyright", "My Name"
VALUE "OriginalFilename", "my_app.exe"
VALUE "ProductName", "My App"
VALUE "ProductVersion", "1.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1252
END
END
Обратите внимание, что langID предназначен для английского языка в Великобритании (который является ближайшей локализацией к Австралии, которую я смог определить). Если вы хотите использовать английский язык в США, измените BLOCK
строку на:
BLOCK "040904E4"
и строку перевода на:
VALUE "Translation", 0x409, 1252
VALUE "Translation", 0x409, 1252, 0x809, 1252
включит английский и американский английский в соответствии с msdn.microsoft.com/en-us/ библиотека / aa381058.aspx . Это также говорит вам, что вы можете включить более одного «БЛОКА" lang04E4 "»
IconsExtract
чтобы встроить значок в нужный файл exe
.
В RC-файле nameID даже не обязательно должно быть именем, это может быть просто целое число. Имя файла должно быть заключено в кавычки, только если оно содержит пробел. Вместо того:
windres my.rc -O coff -o my.res
Ты можешь использовать:
windres my.rc my.o
my.o
с MinGW g++
после windres my.rc my.o
(какое-то WinMain
сообщение об ошибке), но windres my.rc -O coff -o my.res
путь работал нормально.
.o
(= COFF автоматически; я называю это как my.res.o
для ясности) у меня работает. На самом деле .res
файлы, созданные MSVC, имеют другой формат, поэтому он кажется странным / несовместимым с использованием COFF in.res
Попробуйте Resource Hacker. Мне удалось скомпилировать свой проект в Linux (WSL) и создать значок из логотипа на домашней странице. Просто нужен был простой способ встроить его в exe, и эта программа отлично работала. Ресурсный хакер, Ангус Джонсон