【问题标题】:VS 2008 resource type error while changing language更改语言时出现 VS 2008 资源类型错误
【发布时间】:2013-09-16 15:27:43
【问题描述】:

在将我的 Visual Studio 项目中资源元素的语言从英语更改为阿塞拜疆时,我收到此错误:

错误 RC2144:主语言 ID 不是数字

那一行是:

LANGUAGE LANG_AZERI_CYRILLIC, SUBLANG_AZERI_CYRILLIC

这里发生了什么?

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#include <windows.h>
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#ifndef APSTUDIO_INVOKED
#include "targetver.h"
#endif
#include "winres.h"

【问题讨论】:

    标签: windows winapi visual-c++ mfc


    【解决方案1】:

    错误是因为资源设计器使用了winres.h中定义的常量(语言ID),但是winres.h没有包含在资源文件中。

    将此行添加到resource.rc(以文本形式查看代码,而不是从对话框编辑器中查看代码),这将解决问题:

    #define APSTUDIO_READONLY_SYMBOLS
    #include <winres.h>
    #undef APSTUDIO_READONLY_SYMBOLS
    

    P.S:您还需要定义 APSTUDIO_READONLY_SYMBOLS 以保留包含 winres.h,因为 Visual Studio 将始终删除 #include

    【讨论】:

    • 在 Visual Studio 2015 中,我不得不将这些行添加到 resource.h,因为它们不断从 .rc 文件中删除。
    【解决方案2】:

    只需将#include &lt;windows.h&gt; 添加到您的resources.rc 文件中。有时该行不生成。

    这很糟糕,我知道。

    【讨论】:

    • 此链接已失效。
    • 已修复 - 链接无论如何都不相关。
    【解决方案3】:

    解决方案是将资源文件中的LANGUAGE LANG_AZERI_CYRILLIC, SUBLANG_AZERI_CYRILLIC 行更改为LANGUAGE LANG_AZERI, SUBLANG_AZERI_CYRILLIC 定义的here。 似乎 Visual Studio 错误地生成了该代码。

    【讨论】:

      【解决方案4】:

      在 Visual Studio 2015 中,这些行在编辑资源时总是被覆盖。 要在 Visual Studio 2015 中添加此包括:

      1. 转到“资源视图”Ctrl+Shift+E
      2. 右键resource.rc文件,选择resourceincludes
      3. 添加写保护符号:

        #include "winres.h"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 2019-09-04
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多