尝试在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>
当我单击“编辑代码”时,什么也没发生。
我很感谢任何建议。
答案 0 :(得分:4)
我们不得在 .rc 文件中包含 windows.h 或 winnt.h -此标头-适用于c / c ++编译器而不是为 RC 设计的(用于处理 .rc 文件的资源编译器)。因此,如果包含此类文件,我们可能会出错。
我们需要在{em> .rc 文件中包含#include <winres.h>
。此文件是专门为 RC 编译器设计的。内部包括:
#include <winuser.rh>
#include <commctrl.rh>
#include <dde.rh>
#include <winnt.rh>
#include <dlgs.h>
#include <winver.h>
并定义一些宏。
我们需要/在 rc 文件中使用的所有标准Windows定义-存在于 winres.h 中(及其子包含项)。从另一方面来看, windows.h 中没有多余的符号/定义- rc 不需要它,并且有些时候会导致错误。
因此只需在资源文件的开头#include <winres.h>
,就可以了。
答案 1 :(得分:0)
我在尝试编辑在 vs2010 中编译的项目中的 rc 文件时遇到了这个抱怨 rc2247。这是从vs2050升级的。我发现如果我选择通过'版本选择器'打开.sin文件而不是直接进入vs2010,那么它仍然在vs2010中打开但是编辑rc没有问题。我不装懂! 日历人