Windows VS 2008更改语言时出现资源类型错误

Windows VS 2008更改语言时出现资源类型错误,windows,winapi,visual-c++,mfc,Windows,Winapi,Visual C++,Mfc,将visual studio项目中资源元素的语言从英语更改为阿塞拜疆语时,我遇到以下错误: 错误RC2144:主语言ID不是数字 这条线是: LANGUAGE LANG_AZERI_CYRILLIC, SUBLANG_AZERI_CYRILLIC 这里发生了什么事 // Microsoft Visual C++ generated resource script. // #include "resource.h" #include <windows.h> #define APSTU

将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"
只需将include添加到resources.rc文件中,如下所述:


我知道这很蹩脚。

解决方案是将资源文件中的行语言LANG_AZERI_西里尔文、SUBLANG_AZERI_西里尔文更改为LANG_AZERI、SUBLANG_AZERI_西里尔文,如定义所示。
visual studio似乎错误地生成了该代码。

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

将此行作为文本添加到resource.rc视图代码中,而不是从对话框编辑器中添加,这将解决问题:

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

注意:您还需要定义APSTUDIO_READONLY_符号以保留include winres.h,因为VisualStudio将始终使用VisualStudio2015删除include

,在编辑资源时,这些行始终被覆盖。 要添加此功能,请使用Visual Studio 2015:

转到资源视图Ctrl+Shift+E 右键单击resource.rc文件并选择resourceincludes 添加到写保护符号:

包括winres.h


在Visual Studio 2015中,我不得不将这些行添加到resource.h中,因为它们一直从.rc文件中删除。