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

Posted

技术标签:

【中文标题】如何向 mingw-gcc 编译的可执行文件添加图标?【英文标题】:How do I add an icon to a mingw-gcc compiled executable? 【发布时间】:2010-10-17 00:47:02 【问题描述】:

在windows中,使用mingw的gcc,是否有指定输出exe文件取一个图标文件,以便exe文件在资源管理器中显示该图标?

【问题讨论】:

【参考方案1】:

您需要先创建图标。然后您需要创建一个包含以下内容的 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 resource。

【讨论】:

如果示例显示了在哪里插入 ICON 行,那就太好了。 然后...其次..***.com/questions/1411040/… 您还可以通过仅附加 WORD、WORD 对来包含多个“翻译”(它只是告诉 Windows 该程序已翻译),例如:VALUE "Translation", 0x409, 1252, 0x809, 1252 将启用美国和英国英语到msdn.microsoft.com/en-us/library/aa381058.aspx。这也告诉你可以包含多个 'BLOCK "lang04E4"' 我使用 Nirsoft 的免费实用程序 IconsExtract 获得了一个嵌入到我需要的 exe 中的图标。【参考方案2】:

在 RC 文件中,nameID 甚至不必是名字,它可以是 一个整数。 文件名 只有在它包含空格时才必须被引用。反而 的:

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

你可以使用:

windres my.rc my.o

ICON resource

windres man page

Example

【讨论】:

我无法在 windres my.rc my.o 之后将 my.o 与 MinGW 的 g++ 链接(一些与 WinMain 相关的错误消息),但 windres my.rc -O coff -o my.res 路径工作正常。 .o(= COFF 自动;为了清楚起见,我将其命名为 my.res.o)对我有用。实际上,MSVC 生成的 .res 文件具有不同的格式,因此在 .res 中使用 COFF 似乎很奇怪/不兼容【参考方案3】:

试试资源黑客。我能够在 Linux (WSL) 中交叉编译我的项目并从主页上的徽标生成一个图标。只需要一种简单的方法将其嵌入到 exe 中,并且该程序运行良好。 Resource Hacker by Angus Johnson

【讨论】:

这更容易。刚刚打开.exe,点击“添加二进制或图像资源”,打开.ico文件,保存。

以上是关于如何向 mingw-gcc 编译的可执行文件添加图标?的主要内容,如果未能解决你的问题,请参考以下文章

QT如何修改编译后产生的可执行文件的路径》

如何把ndk编译出来的可执行文件伪装成so打包到apk中

如何反编译旧Macromedia Director 7制作的可执行文件?

交叉编译-如何编译Android平台的可执行程序

如何将在windows下写的程序编译成linux下的可执行程序文件?

请问如何在windows下编译c代码为Linux系统的可执行文件呢