如何向 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 编译的可执行文件添加图标?的主要内容,如果未能解决你的问题,请参考以下文章
如何反编译旧Macromedia Director 7制作的可执行文件?