代码之家  ›  专栏  ›  技术社区  ›  Pierre

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

  •  1
  • Pierre  · 技术社区  · 7 年前

    尝试在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>
    

    当我点击“编辑代码”时,什么都不会发生。

    我很感激你的任何建议。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Jabberwocky    7 年前

    我们不能包括 窗口.h 温特.h 钢筋混凝土 文件-这个标题是用于C/C++编译器而不是为 钢筋混凝土 (资源编译器处理 钢筋混凝土 文件)。因此,如果我们包含这些文件,可能会出错。

    我们需要包括 #include <winres.h> 钢筋混凝土 文件夹。这个文件是专门为 钢筋混凝土 编译器。内部包括:

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

    并定义一些宏。

    我们需要/使用的所有标准Windows定义 钢筋混凝土 文件-存在于 温尔斯.h (及其附加条款)。从另一个方面来说,没有额外的符号/定义 窗口.h -不需要它 钢筋混凝土 有时会导致错误。

    那么简单 #包括<winres.h> 在资源文件的开头,一切都会正常。