Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何向mingw gcc编译的可执行文件添加图标?_Windows_Gcc_Icons_Mingw - Fatal编程技术网

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

Windows 如何向mingw gcc编译的可执行文件添加图标?,windows,gcc,icons,mingw,Windows,Gcc,Icons,Mingw,在Windows中,使用mingw的gcc,是否可以指定输出exe文件采用图标文件,以便exe文件在资源管理器中显示该图标?您需要先创建图标。然后您需要创建一个包含以下内容的RC文件。这里我们将它命名为my.rc id ICON "path/to/my.ico" 上述命令中提到的id几乎可以是任何东西。这并不重要,除非您想在代码中引用它。然后运行windres,如下所示: windres my.rc -O coff -o my.res 然后,在构建可执行文件时,与其他对象文件和资源文件一起,

在Windows中,使用mingw的gcc,是否可以指定输出exe文件采用图标文件,以便exe文件在资源管理器中显示该图标?

您需要先创建图标。然后您需要创建一个包含以下内容的RC文件。这里我们将它命名为
my.rc

id ICON "path/to/my.ico"
上述命令中提到的
id
几乎可以是任何东西。这并不重要,除非您想在代码中引用它。然后运行windres,如下所示:

windres my.rc -O coff -o my.res
然后,在构建可执行文件时,与其他对象文件和资源文件一起,包括我们从上述步骤获得的
my.res
。e、 g:

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是英国英语(这是最接近的本地化)。 澳大利亚(我可以识别。)如果您想要美国“英语”,请更改
行至:

将翻译行改为:

VALUE "Translation", 0x409, 1252
有关信息,请参阅。

在RC文件中,nameID甚至不必是名称,它可以是 整数。仅当文件名包含空格时,才必须引用该文件名。相反 其中:

您可以使用:

windres my.rc my.o

试试资源黑客。我能够在Linux(WSL)中交叉编译我的项目,并从主页上的徽标生成一个图标。只需要一个简单的方法将它嵌入到exe中,这个程序工作得很好。

如果示例显示了在何处插入图标行,那就太好了。而且。。。其次您还可以通过添加单词、单词对来包含多个“翻译”(这只是告诉Windows此程序已翻译),例如:
VALUE“Translation”,0x409、1252、0x809、1252
将根据需要启用美国和英国英语。这还告诉您,您可以包含多个“BLOCK”lang04E4“我使用Nirsoft的免费实用程序
iconextract
在我需要的
exe
中嵌入图标。我无法在
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似乎有点奇怪/不兼容。这更简单。只需打开.exe,单击“添加二进制或图像资源”,打开.ico文件并保存。
windres my.rc -O coff -o my.res
windres my.rc my.o