ошибка RC2247: слишком длинное имя символа (winnt.h) - PullRequest
0 голосов
/ 04 сентября 2018

Я получаю ошибку RC2247 (слишком длинное имя символа) при попытке отобразить диалоги в приложении Win32. Ошибка происходит в этом файле:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um\winnt.h

Это работало нормально под VS2015. Ошибка началась при обновлении до VS2017.

Я видел следующие посты, они кажутся неактуальными, потому что они относятся к prsht.h:

RC2247: Невозможно открыть файл Rc: Проводник ресурсов не может загрузить ресурс; Загрузка не удалась

http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/4a648d6a-ea81-44d3-89c2-57fa5caa6fd6

Ошибка исчезнет, ​​если я закомментирую весь файл resource.rc. Ошибка возникает, если RC содержит одну строку:

#include <winnt.h>

Когда я нажимаю «Изменить код», ничего не происходит.

Я благодарен за любые предложения.

1 Ответ

0 голосов
/ 04 сентября 2018

Мы не должны включать windows.h или winnt.h до .rc - эти заголовки - для предназначены для компиляторов c / c ++ и не предназначены для RC (компилятор ресурсов, который обрабатывает файл .rc ). в результате, если мы включим такие файлы, мы можем получить ошибки.

Нам нужно включить файлы #include <winres.h> до .rc . Этот файл специально разработан для компилятора RC . Внутренне это включало:

#include <winuser.rh>
#include <commctrl.rh>
#include <dde.rh>
#include <winnt.rh>
#include <dlgs.h>
#include <winver.h>

и определите некоторые макросы.

Все стандартные определения окон, которые нам нужны / используются в rc файле, существуют в winres.h (и он включает в себя). С другой стороны, в нем нет никаких дополнительных символов / определений, которые существуют в windows.h - это не нужно для rc и некоторое время может вызвать ошибки.

Так просто #include <winres.h> в начале файлов ресурсов и все будет ОК.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...