【问题标题】:When Compiling With .RES File with MinGW G++, .RES isn't Recognized使用 MinGW G++ 编译 .RES 文件时,无法识别 .RES
【发布时间】:2020-04-04 06:18:26
【问题描述】:

我一直在尝试在 Windows 上编译一个与 icon 链接的程序。根据我最近的研究,因为我以前从未这样做过,所以您将制作一个包含程序信息的 .RC 文件,包括图标,您将然后使用 windres 将其转换为 .RES 文件,然后在编译时链接该文件:

g++ program.cpp -o program.exe

会变成

g++ program.cpp program.res -o program.exe

我猜这是正确的方法,但我不确定,因为当我尝试编译程序时,它给出了错误:

program.res: file not recognized: file format not recognized
collect2.exe error: ld returned 1 exit status

我能做些什么来解决这个问题?我见过有人说,如果您正在编译 32 位程序,我相信我是这样,您可以添加参数将其转换为用于编译 32 位程序的 .RES 文件。我已经尝试过了,但是它给出了完全相同的问题,所以我认为这不是问题所在。

【问题讨论】:

  • 创建.res文件的具体步骤是什么?
  • 首先,我制作了一个 .RC 文件,其中包含以下文本:id ICON "program.ico",仅此而已。然后,我进入命令行,输入windres program.rc -o program.res。然后我输入了g++ program.cpp program.res -o program.exe

标签: c++ windows icons


【解决方案1】:

制作.res时添加coff

windres my.rc -O coff my.res

这会将 .res 保存为可用的格式。

我基于在堆栈溢出帖子和快速 wiki 搜索中使用它。 另外,我有同样的问题并添加 coff 解决了它。 链接: https://stackoverflow.com/a/708382 https://en.wikipedia.org/wiki/COFF

【讨论】:

    【解决方案2】:

    因此,在 Windows 上,您可以使用 Visual Studio Developer-Powershell。

    创建一个 .rc 文件(创建一个 .txt 文件并更改扩展名)。

    我的.rc

    iconName ICON "path_to_icon.ico"
    

    将 my.rc 编译成 my.rcs。

    rc my.rc
    

    现在你想将它与你的可执行文件链接起来。但是你不能用 .rcs 文件做到这一点。你必须先用“cvtres”转换它。

    cvtres /MACHINE:x64 my.res
    

    这会生成一个名为“my.obj”的文件。现在可以在调用 g++ 时链接此文件,例如,就像上面问题中所做的那样。

    来源:https://docs.microsoft.com/en-us/windows/win32/menurc/renaming-the-compiled-resource-file

    然后必须调用 CVTRES 将 .res 文件转换为二进制文件 链接器可以理解的资源(.rbj)格式。

    有关 Visual Studio 中包含的资源编译器的更多信息:https://docs.microsoft.com/en-us/windows/win32/menurc/resource-compiler

    干杯

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      相关资源
      最近更新 更多