我一直在尝试在Windows上编译一个程序,该程序将有一个与之链接的图标。根据我最近的研究,因为我以前从未这样做过,所以您可以使用程序的信息(包括图标)创建一个 .RC 文件,然后使用Windres将其转换为 .RES 文件,您可以将其转换为 .RES 文件。然后在编译时链接:
g++ program.cpp -o program.exe
Run Code Online (Sandbox Code Playgroud)
会成为
g++ program.cpp program.res -o program.exe
Run Code Online (Sandbox Code Playgroud)
我猜这是正确的方法,但我不确定,因为当我尝试编译程序时,它给出了错误:
program.res: file not recognized: file format not recognized
collect2.exe error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我可以做什么来解决这个问题?我见过有人说如果你正在编译 32 位程序(我相信我是这样),你可以添加参数将其转换为用于编译 32 位程序的 .RES 文件。我已经尝试过了,但是它给出了完全相同的问题,所以我不认为这就是问题所在。
制作.res时添加coff
windres my.rc -O coff my.res
这将以可用的格式保存 .res。
我将此基于在堆栈溢出帖子和快速 wiki 搜索中使用它。另外,我也遇到了同样的问题,添加 coff 修复了它。链接: /sf/answers/49586771/ https://en.wikipedia.org/wiki/COFF