在Windows中,使用mingw的gcc,是否仍然指定输出的exe文件采用图标文件,以便exe文件在资源管理器中显示该图标?
在Windows中,使用mingw的gcc,是否仍然指定输出的exe文件采用图标文件,以便exe文件在资源管理器中显示该图标?
Answers:
您需要先创建图标。然后,您需要使用以下内容创建一个RC文件。在这里,我们将其命名为my.rc
。
id ICON "path/to/my.ico"
在id
上面提到的命令可以是相当多的东西。除非您要在代码中引用它,否则不要紧。然后按照以下方式运行windes:
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/zh-cn/启用美国英语和英国英语library / aa381058.aspx。这也告诉您可以包含多个'BLOCK“ lang04E4”'
IconsExtract
将图标嵌入到所需的图标中exe
。
在RC文件中,nameID甚至不必是名称,而可以是整数。该文件名必须唯一,如果它包含空格报价。代替:
windres my.rc -O coff -o my.res
您可以使用:
windres my.rc my.o
my.o
与MinGW的g++
after链接windres my.rc my.o
(一些WinMain
相关的错误消息),但是windres my.rc -O coff -o my.res
路径工作正常。
.o
(=自动COFF;my.res.o
为清晰起见,我起了个名字)对我有用。实际上.res
,由MSVC生成的文件具有不同的格式,因此在.res
尝试Resource Hacker。我能够在Linux(WSL)中交叉编译我的项目,并从主页上的徽标生成一个图标。只需要一种简单的方法将其嵌入exe中,该程序就可以很好地工作。 安格斯·约翰逊(Angus Johnson)的资源黑客