如何使用MinGW Windres编译资源文件?

2024-02-03

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

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 看起来像这样:

#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 的属性选项卡中设置版本号是多么复杂。我读过很多其他的答案,但没有一个对我有用。例如this one https://stackoverflow.com/questions/1022449/how-to-change-an-executables-properties-windows在拥有这个 resources.rc 文件后如何准确地进行似乎太模糊了。


作为资源编译器windres不知道在文件中找到的常量,因此您需要提供这些常量,这通常是通过包含来完成的。
最简单的方法是将文件的标题调整为以下内容:

#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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用MinGW Windres编译资源文件? 的相关文章

随机推荐

  • Android 从主机名获取 ipv6 地址

    我正在尝试从 Android 设备上的主机名获取 IPv6 地址 我的设备是 Nexus 7 和 6 0 1 版本 下面是我使用的API InetAddress inets InetAddress getAllByName hostname
  • 为什么 AngularJS 路由在本地不起作用?

    我有实现 AngularJS 路由的 html 文件 如下所示 索引 html div div
  • 生成html后消除分隔primefaces布局单元的元素

    是否可以消除或编辑分隔 primefaces 布局单元元素 顶部 西部 中心等 的元素 这些元素的 id 结尾为 调整大小 我在 primefaces 3 1 1 jar 中找不到哪个类执行此操作 例如 当生成为html后的元素layout
  • 如何在 Rails 控制台中重新加载模型?

    gt rvm list rvm rubies ruby 1 9 2 p290 i686 ruby 1 9 3 p194 i686 gt rails v Rails 3 1 1 相关但未回答 是否有 Rails 控制台命令 Rails 3 来
  • java.lang.NoClassDefFoundError: com.urbanairship.UAirship

    我有一台新 Mac Lion 10 7 3 安装了Eclipse和android sdk 从 SVN 检查我的项目 尝试运行并得到这个丑陋的异常 05 20 12 17 21 175 E AndroidRuntime 32499 FATAL
  • 可以为分布式 Tensorflow 虚拟化 NVIDIA GeForce GTX 1070 显卡吗?

    我在配备 16 GB RAM 1 TB HDD 和专用硬盘的 Intel Core i7 8700 CPU 上运行 Windows 10NVIDIA GeForce GTX 1070 https www geforce com hardwa
  • FileReader之后可以清理内存吗?

    FileReader 似乎消耗了所有内存 因为它被重复用于预加载多个 blob 并且从不释放它 有什么已知的方法可以强制它释放消耗的内存吗 将 FileReader 对象及其结果属性设置为 null 似乎不起作用 UPDATE 这里有一个示
  • 使用 Rollup 和外部依赖项部署 Angular 2 应用程序 Aot

    我已经实现了一个 Angular 2 应用程序 它利用Kendo UI 网格 http www telerik com kendo angular ui 使用 AoT Rollup 部署应用程序时我陷入困境 错误 GridModule 未由
  • 休眠禁用缓存

    我想禁用休眠缓存 session setCacheMode CacheMode IGNORE 不起作用 query setCacheable false 也不起作用 此外 我可以以某种方式配置不为对象 X Y 执行缓存 但为对象 Z 执行缓
  • SQL 脚本到 SSIS 表达式

    我有下面的 T SQL 查询行 我正在尝试将其转换为 Visual Studio SSIS 表达式到派生列任务 So tableA刚刚 Work item Submission no 列 但我需要将它们分成两列 例如SubmissionCo
  • PHP 与 GET 请求的切换

    我正在为我的网站构建一个简单的管理区域 我希望 URL 看起来像这样 http mysite com admin home http mysite com admin settings http mysite com admin users
  • R grep 多列搜索模式

    我有一个数据框 如下所示 Col1 Col2 Col3 A B C D E F G H I 我试图保持与 Col2 中的 B 或 Col3 中的 F 匹配的行 以获得 Col1 Col2 Col3 A B C D E F I tried d
  • 如何使用 vb.net 将数据获取到数据库(类、模块和表单)

    我希望标题足以理解我的问题 我已经安装了运行 ADO NET 所需的东西 我的模块中已经有一个连接字符串 并且我的类中已经有一个数据查询 Imports System Data Imports System Data OleDb Modul
  • 如何使用 Razor MVC 显示文件夹中的图像?

    我正在使用 Razor MVC 我想显示 Content uploads 文件夹中的图像 我想出了以下解决方案 foreach FileInfo fileInfo in new DirectoryInfo Server MapPath Co
  • MSEdge 无法启动:崩溃(chrome 无法访问)

    我是 Selenium python 的初学者 我尝试使用以下代码使用现有配置文件 默认 调用 Edge 浏览器 但一旦执行开始 它就会抛出以下异常 有人可以帮我解决这个问题吗 我错过了什么吗 edge options webdriver
  • 当鼠标位于旋钮图像上时,如何将图像放在 jslider 的旋钮图像上

    当鼠标位于旋钮图像上时 我需要将图像放在 jslider 的旋钮图像上 我做过这样的事情 slider new Slider s new mySliderUI slider slider png slider setUI s slider
  • 在 Puppet 中迭代哈希键/值

    我正在尝试使用 Puppet 来更新 ASP NET web config 中的任意应用程序设置列表 用于部署目的 但我陷入了困境 主要是因为我是一个真正的 puppet 专家 我有这个 yaml 文件 hiera appSettings
  • “复数或单数生成的对象名称”设置是什么意思?

    设置新的实体数据模型时 可以选择 x 将生成的对象名称复数或单数化 我注意到这也是 LINQ 中的一个选项 另外 现在我正在研究 ADO NET 实体框架 我注意到它还有 DEFAULT 来 复数或单数生成的对象名称 设置 实体数据模型 时
  • Android Studio 中按 Enter 键换行?

    我刚刚开始使用 Android Studio 当我编辑 activity main xml 时 我无法通过按 Enter 键转到新行 另外 我尝试插入新字母 但新字母刚刚被替换 所以我到处点击以使输入键起作用 然后突然我得到了新的一行 我不
  • 如何使用MinGW Windres编译资源文件?

    我的最终目标是设置使用 MinGW gcc g 编译的可执行文件的版本 在属性 gt 详细信息中显示 但现在我想用 Windres 编译一个资源文件 以便稍后能够手动链接它 但是当我使用此命令时出现以下错误 windres resource