在 Windows 中,使用 mingw 的 gcc,是否有指定输出 exe 文件采用图标文件,以便 exe 文件在资源管理器中显示该图标?
myforwik
问问题
48930 次
3 回答
196
您需要先创建图标。然后您需要创建一个包含以下内容的 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
有关信息,请参阅VERSIONINFO 资源。
于 2009-04-02T05:14:20.553 回答
6
在 RC 文件中,nameID甚至不必是名称,它可以是一个整数。只有当文件名包含空格时,它才必须被引用。代替:
windres my.rc -O coff -o my.res
您可以使用:
windres my.rc my.o
于 2014-10-02T02:20:51.943 回答
2
试试资源黑客。我能够在 Linux (WSL) 中交叉编译我的项目并从主页上的徽标生成一个图标。只需要一种简单的方法将其嵌入到 exe 中,并且该程序运行良好。 安格斯·约翰逊的资源黑客
于 2019-05-29T03:08:09.093 回答