首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用MinGW windres编译资源文件?

如何用MinGW windres编译资源文件?
EN

Stack Overflow用户
提问于 2018-03-27 16:45:46
回答 1查看 2.6K关注 0票数 2

我的最终目标是设置使用MinGW gcc-g++编译的可执行文件的版本(在属性->详细信息中显示)。但现在,我想用windres编译一个资源文件,以便以后能够手动链接它。但是当我使用这个命令时,我得到了以下错误:windres resource.rc -o resource.res

代码语言:javascript
复制
windres: resource.rc:2: syntax error
The process tried to write to a nonexistent pipe.
...
The process tried to write to a nonexistent pipe.
resource.rc:4:0: fatal error: when writing output to : Invalid argument
VS_VERSION_INFO VERSIONINFO

compilation terminated.
windres: preprocessing failed.

我的resource.rc看起来像这样:

代码语言:javascript
复制
#include "winver.h"

#include "../include/resource.h"
VS_VERSION_INFO VERSIONINFO
 FILEVERSION    0,0,0,2
 PRODUCTVERSION 0,0,0,2
 FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
 FILEFLAGS 0x1L
 #else
 FILEFLAGS 0x0L
 #endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "Comments",         "comment\0"
            VALUE "CompanyName",      "comment\0"
            VALUE "FileDescription",  "base file\0"
            VALUE "FileVersion",      "0.0.0.2 TP\0"
            VALUE "InternalName",     "testTP\0"
            VALUE "LegalCopyright",   "none\0"
            VALUE "OriginalFilename", "test.exe\0"
            VALUE "ProductName",      "test\0"
            VALUE "ProductVersion",   "0.0.0.2 TP\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

我的resource.h是空的,也许这就是问题所在?让我惊讶的是,在exe的属性选项卡中简单地设置版本号是多么复杂。我已经读了很多其他的SO答案,但没有一个对我有效。例如,在有了这个resource.rc文件后,this one似乎对如何准确地继续进行过于模棱两可。

EN

回答 1

Stack Overflow用户

发布于 2020-11-08 05:58:00

作为一个资源编译器,windres不知道在您的文件中找到的常量,所以您需要提供这些常量,这通常是通过includes来完成的。

最简单的方法是将文件的头文件调整为以下内容:

代码语言:javascript
复制
#include <windows.h>

VS_VERSION_INFO VERSIONINFO
 FILEVERSION    0,0,0,2
 PRODUCTVERSION 0,0,0,2
 FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
 FILEFLAGS 0x1L
 #else
 FILEFLAGS 0x0L
 #endif

 /* rest follows */

因为你想编译/链接到gcc,所以你希望windres输出一个目标文件,否则你以后就不能链接它了。要解决此问题,请将编译命令更改为windres resource.rc -o resource.o

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49508242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档