错误RC2247:符号名称太长(winnt.h)

问题描述 投票:1回答:1

尝试在Win32应用程序中显示对话框时,我收到RC2247错误(符号名称太长)。此文件中发生错误:

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

这在VS2015下运行良好。我升级到VS2017时错误开始了。

我看过以下帖子,它们似乎并不相关,因为它们与prsht.h有关:

RC2247 : Cannot open Rc file : Resource explorer cannot load resource ; Load failed

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

如果我注释掉整个resource.rc文件,错误就会消失。如果RC包含单行,则会发生错误:

#include <winnt.h>

当我点击“编辑代码”时,没有任何反应。

我很感激任何建议。

windows winapi visual-studio-2017
1个回答
4
投票

我们不能将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>在资源文件的开头就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.