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

Ale*_*ruC 2 windows winapi mfc visual-c++

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

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

那行是:

LANGUAGE LANG_AZERI_CYRILLIC, SUBLANG_AZERI_CYRILLIC
Run Code Online (Sandbox Code Playgroud)

这里发生了什么事?

// 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"
Run Code Online (Sandbox Code Playgroud)

dns*_*dns 7

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

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

#define APSTUDIO_READONLY_SYMBOLS
#include <winres.h>
#undef APSTUDIO_READONLY_SYMBOLS
Run Code Online (Sandbox Code Playgroud)

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

  • 在 Visual Studio 2015 中,我必须将这些行添加到“resource.h”,因为它们不断从“.rc”文件中删除。 (2认同)