У Windows, використовуючи gcc mingw, чи є в будь-якому випадку вказати, що вихідний файл exe повинен взяти файл значка, щоб файл exe відображався з цим значком у провіднику?
У Windows, використовуючи gcc mingw, чи є в будь-якому випадку вказати, що вихідний файл exe повинен взяти файл значка, щоб файл exe відображався з цим значком у провіднику?
Відповіді:
Спочатку потрібно створити піктограму. Потім вам потрібно створити RC-файл із вмістом нижче. Тут ми будемо називати це як my.rc
.
id ICON "path/to/my.ico"
id
Зазначено вище в команді може бути в значній мірі все. Це не має значення, якщо ви не хочете посилатися на це у своєму коді. Потім виконайте обмотки таким чином:
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
Для отримання додаткової інформації див. Ресурс VERSIONINFO .
VALUE "Translation", 0x409, 1252, 0x809, 1252
увімкне як англійську, як США, так і Великобританію згідно msdn.microsoft.com/en-us/ library / aa381058.aspx . Це також говорить вам, що ви можете включити більше одного "BLOCK" lang04E4 "'
IconsExtract
щоб отримати вбудовану в потрібну exe
мені піктограму .
У файлі RC ідентифікатор name навіть не повинен бути ім'ям, це може бути просто ціле число. Ім'я файлу має бути вказано в лапках, лише якщо воно містить пробіл. Замість:
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 в.res
Спробуйте Resource Hacker. Я зміг скомпілювати свій проект у Linux (WSL) та створити піктограму з логотипу на домашній сторінці. Просто потрібен був простий спосіб вбудувати його в exe, і ця програма чудово працювала. Ресурсний хакер Ангуса Джонсона