У меня есть файл .rc, который используется для включения некоторых текстовых данных в мой исполняемый файл, например:
1234 RCDATA myfile.txt
Это отлично работает: содержимое myfile.txt включено в мой исполняемый файл. Проблема в том, что к строке не добавляется 0-терминатор, и я не могу добавить его в файл. Есть ли способ добавить 0-терминатор из файла .rc? Что-то вроде этого:
1234 RCDATA { myfile.txt, "\0" } // error RC2104
Обратите внимание, что я уже нашел это решение, но ищу что-то более элегантное.
1234 RCDATA myfile.txt
1235 RCDATA { "\0" }
Большое спасибо, Эли





Я так не думаю, если только вы не напишете свой собственный компилятор ресурсов.
Я не встречал такой, который позволял бы собрать один ресурс из нескольких источников.
Вы можете написать небольшую утилиту для добавления завершающего '\ 0' к файлу, например makeZ.exe,
.
и установите дополнительный шаг сборки:
makeZ myfile.txt myfileZ.txt
В вашем .rc будет
1234 RCDATA myfileZ.txt
В качестве альтернативы вы можете посмотреть на встраивание данных в сам RC в соответствии с этим фрагментом из Руководство GORC:
0x3333 RCDATA
BEGIN
"Hello world"
"Hello world (zero terminated)\0"
L"A Unicode version of the above\0"
0x9999 ;hex number stored as a word
END
MyRes RCDATA
BEGIN
1034 ;decimal number stored as a word
END
MyRes MyResType
BEGIN
10456L ;decimal number stored as a dword
1234L,56666L,99999L ;decimal numbers stored as dwords
END
34h 100h
BEGIN
33hL,34hL,35hL,36hL ;hex numbers stored as dwords
0x37L,0x38L,0x39L,0x40L ;C-style hex numbers stored as dwords
END
Лучше поместить завершающий символ в сам файл. Если myfile.txt хранится в ANSI, вам нужен один конечный байт, если myfile.txt хранится в Unicode, вам нужны два конечных байта, и ваш оператор RCDATA не может включить его.