如何生成字符串类型ID的资源条目?

How to generate resource entry of string type ID?

我有一个包含以下条目的 .rc 文件:

01111 my_res { "string 1" }
01113 my_res { "string 2" }
01119 my_res { "string 3" }

当我用rc.exe编译这个.rc文件时,资源条目id分别变成111111131119

显然,资源编译器将 ID 视为数字。

我的第一印象是 .res 文件不能将数字存储为字符串类型。但是当使用资源编辑器(例如:XNResourceEditor.exe将资源ID 1111更改为01111并存储为01111时。这表明资源ID可能存储为数字字符串类型。

有没有办法将数字资源id编译为字符串类型?

资源编译器 RC 没有任何允许您转义整数 ID 以便将其视为文本的语法。

文档说:

Unique name or a 16-bit unsigned integer that identifies the resource.

资源编译器尝试将 ID 解释为整数。如果可以,则 ID 被解释为整数,否则被解释为字符串。如果整数超出 16 位整数的范围,则使用它的值和 0xffff

这是资源编译器的限制。资源格式支持仅包含数字的文本 ID。如果生产此类资源对您来说至关重要,那么我认为您需要:

  1. 找到一个允许将数字转义为文本的资源编译器,或者
  2. 编写自己的基本资源编译器来执行任务。