尝试在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
如果我注释掉整个resource.rc
文件,错误就会消失。如果RC包含单行,则会发生错误:
#include <winnt.h>
当我点击“编辑代码”时,没有任何反应。
我很感激任何建议。
我们不能将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>
在资源文件的开头就可以了。