gpt4 book ai didi

c++ - 错误 RC2255 : named STRINGTABLEs are not allowed - occurs when generating a Japanese RES file

转载 作者:行者123 更新时间:2023-11-28 02:33:57 25 4
gpt4 key购买 nike

我有一个包含多个 .RC 文件的静态库,每个文件对应一种特定的语言。在大多数情况下(英语、法语),该项目在 Visual Studio 中构建良好(即生成 .RES 文件)。关于我制作的 en-GB.RC 文件,请参见下文:

#pragma once

#include <windows.h>
#include "resource.h"

/* Exceptions */
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
{
IDS_EXCEPTION_MESSAGE_ARGUMENT, "Value is invalid."
IDS_EXCEPTION_MESSAGE_ARGUMENT_NAMED, "'%s' value is invalid."
IDS_EXCEPTION_MESSAGE_ARGUMENTOUTOFRANGE, "Value is outside of acceptable range."
IDS_EXCEPTION_MESSAGE_ARGUMENTOUTOFRANGE_NAMED, "'%s' value is outside of \
acceptable range."
IDS_EXCEPTION_MESSAGE_EXCEPTION, "Exception of type '%s' was thrown."
IDS_EXCEPTION_MESSAGE_FILENOTFOUND, "Unable to find the specified file."
IDS_EXCEPTION_MESSAGE_FILENOTFOUND_NAMED, "Unable to find '%s'."
IDS_EXCEPTION_MESSAGE_IO, "I/O error occurred."
}

当我尝试创建一个 ja-JP.RC 文件时,我遇到了几个问题。首先,我被要求将文件保存为“unicode”——当我通过“另存为”检查文件编码时,它使用代码页 65001(带有签名的 Unicode UTF8)。如果我不使用此代码页,则会收到有关可能丢失数据的警报。

第二个问题是文件无法编译。我收到以下错误:

错误 RC2255:不允许使用命名的 STRINGTABLE

这是我的 ja-JP.RC 文件:

#pragma once

#include <windows.h>
#include "resource.h"

/* Exceptions */
STRINGTABLE
LANGUAGE LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN
{
IDS_EXCEPTION_MESSAGE_ARGUMENT, "値が無効です。"
IDS_EXCEPTION_MESSAGE_ARGUMENT_NAMED, "「%s」値が無効です。"
IDS_EXCEPTION_MESSAGE_ARGUMENTOUTOFRANGE, "値が許容範囲の外にある。"
IDS_EXCEPTION_MESSAGE_ARGUMENTOUTOFRANGE_NAMED, "「%s」値が許容範囲の外にある。"
IDS_EXCEPTION_MESSAGE_EXCEPTION, "種類「%s」の例外がスローされました。"
IDS_EXCEPTION_MESSAGE_FILENOTFOUND, "指定されたファイルが見つかりません。"
IDS_EXCEPTION_MESSAGE_FILENOTFOUND_NAMED, "「%s」を見つけることができません。"
IDS_EXCEPTION_MESSAGE_IO, "入力/出力エラーが発生しました。"
}

正如您在一些日语字符串中看到的那样,我使用 %s 来传递参数。

我应该如何生成符合“ja-JP”标准的 RES 文件?

最佳答案

it uses Codepage 65001 (Unicode UTF8 with signatures)

我应该在帖子中记录这个事故,错误信息令人困惑,足以让任何人在他们的生活中使用两个小时。 Rc.exe 是一个冷冰冰的旧 Windows SDK 工具,已经跟不上时代的步伐,可能已经过了它仍然可以维护的阶段。我得到的第一个版本是 v1.1,日期是 1985 年 4 月 17 日。它很快就要庆祝它的 30 岁生日:)

它无法正确解析 utf-8 编码的文件。这通常会给出关于无法找到文件的混杂错误,error RC2135, file not found 是典型的。您发现了另一种故障模式,“不允许使用命名的 STRINGTABLE”并没有对问题给出很好的提示 :)

必须将其保存为 utf-16 编码文件,Windows 内部对字符串使用的编码。从“另存为”对话框中选择 Unicode(代码页 1200),单击“保存”按钮上的箭头将其选中。

关于c++ - 错误 RC2255 : named STRINGTABLEs are not allowed - occurs when generating a Japanese RES file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28173233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com