ошибка RC2255: именованные STRINGTABLE не допускаются — возникает при создании файла RES на японском языке

У меня есть статическая библиотека с несколькими файлами .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 для передачи аргументов.

Как создать файл RES, совместимый с ja-JP?

0

Решение

он использует кодовую страницу 65001 (Unicode UTF8 с подписями)

Я должен задокументировать эту неудачу в посте, сообщение об ошибке достаточно запутанно, чтобы кто-нибудь использовал час два из своей жизни. Rc.exe — это устаревший инструмент Windows SDK, который не идет в ногу со временем и, вероятно, уже прошел стадию обслуживания. Первая версия, которую я получил, v1.1 от 17 апреля 1985 года. Скоро ей исполнится 30 лет 🙂

Он не способен правильно анализировать кодированный файл utf-8. это обычно дает ошибочные ошибки о невозможности найти файлы, error RC2135, file not found типично. Вы нашли другой режим сбоя, «именованные STRINGTABLEs не разрешены» точно не дают фантастический намек на проблему 🙂

Вы должен сохраните его как файл в кодировке utf-16 — кодировку, которую Windows внутренне использует для строк. Выберите Unicode (кодовая страница 1200) в диалоговом окне «Сохранить как», нажмите стрелку на кнопке «Сохранить», чтобы выбрать его.

2

Другие решения