Как бороться с ошибкой "Недопустимое определение макроса в командной строке или странице определения"?
Я пытаюсь встроить определенный текстовый файл в качестве ресурса в мой EXE, и у меня чертовски много времени.
Я сделал простую однострочную .rc
файл и добавил его в проект, но BRCC32 задыхается от него с совершенно бесполезной ошибкой:
[BRCC32 Ошибка] MyRes.rc(1): неустранимая ошибка Недопустимое определение макроса в командной строке или определение страницы.
Вот содержимое файла во всей его полноте:
DATA_BASIC_ORDER RCDATA Data\Data_BasicOrder.txt
Это происходит только в том случае, если я встроу в IDE. Я могу успешно построить файл.RES из этого в командной строке, и открытие его в шестнадцатеричном редакторе показывает как имя ресурса, так и содержимое текстового файла, но если я свяжу его с {$R}
директива, ресурс не отображается в EXE. Я проверил это с помощью ResHacker; ресурса просто нет Так что происходит что-то очень странное.
Я попытался выключить и перезапустить IDE. Без изменений. Я также открыл .rc
файл в шестнадцатеричном редакторе, чтобы убедиться, что в нем нет странных символов, которые мешают, но нет, это простой текстовый файл ANSI.
Кто-нибудь знает, что происходит с этим и как я могу это исправить?
РЕДАКТИРОВАТЬ: Это становится все более странным. Если я оставляю строку файла полностью пустой, я все равно получаю ту же ошибку. Но если я удаляю файл из проекта (удаляя его из списка в Project Explorer), это сообщение об ошибке исчезает, но все равно не отображается в сборке.
1 ответ
Обратная косая черта выглядит подозрительно. Попробуйте процитировать это:
RCDATA Data\\Data_BasicOrder.txt
У меня было такое же сообщение об ошибке, и оно продолжало указывать на MyResource.rc, хотя проблема была в одном из условных определений. Каким-то образом два разных определения оказались в одной строке, разделенной запятой.PHNOCODE,DECODE
После исправления Defines мой проект строится правильно.
Как указано в сообщении об ошибке, ответ на вашу проблему может быть виден в командной строке для вызова инструмента BRCC32.exe, сделанного компилятором.
Я столкнулся с этой ошибкой, пытаясь добавить несколько дополнительных "условных определений" в конфигурацию компилятора. Я подозреваю, что есть ограничение на число и длину (и / или количество подчеркиваний), допустимых для условных определений, которые также передаются в brcc32 (используя -d
параметр, видимо)