如何在mingw-gcc编译的可执行文件中添加图标?

时间:2009-04-02 03:57:55

标签: windows gcc icons mingw

在Windows中,使用mingw的gcc,无论如何都要指定输出exe文件是一个图标文件,以便exe文件在资源管理器中显示该图标?

3 个答案:

答案 0 :(得分:170)

您需要先创建图标。然后你需要创建一个RC文件 看起来像这样:

id ICON "path/to/my.ico"

身份证几乎可以。除非你想参考,否则没关系 它在你的代码中。然后运行windres如下:

windres my.rc -O coff -o my.res

然后,您只需在链接时将my.res与目标文件一起包括在内,例如:

g++ -o my_app obj1.o obj2.o 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 resource

答案 1 :(得分:5)

在RC文件中, nameID 甚至不必是名称,它可以只是 整数。仅当 filename 包含空格时,才必须引用它。代替 的:

windres my.rc -O coff -o my.res

您可以使用:

windres my.rc my.o

答案 2 :(得分:0)

尝试Resource Hacker。我能够在Linux(WSL)中交叉编译我的项目,并从主页上的徽标生成一个图标。只需要一种简单的方法将其嵌入exe中,该程序就可以很好地工作。 Resource Hacker by Angus Johnson