Article: Q170530
Product(s): Microsoft C Compiler
Version(s): winnt:5.0
Operating System(s):
Keyword(s): kbcode kberrmsg kbtool kbwizard kbMFC kbVC500bug kbVC600fix kbGrpDSTools kbNoUpdate
Last Modified: 17-JUL-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The AppWizard, used with:
- Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0
- Microsoft Visual C++, 32-bit Professional Edition, version 5.0
-------------------------------------------------------------------------------
SYMPTOMS
========
When you build an AppWizard-generated project, the resource compiler reports the
following error if the default code page is anything other than 1252 (for
example, you have an Eastern European or Asian system locale):
<project\project.rc>(118) : fatal error RC1015: cannot open include
file
'res\\XXXXXXX.rc2'.
This error only occurs when the project name contains characters greater than
0x7F hex.
CAUSE
=====
The Resource Script for the project that AppWizard generates is hard-coded to
specify the code page as 1252 and the language as US English. When the Resource
Compiler attempts to load an .rc2 file with a name that has characters greater
than 0x7F hex, but the code page 1252 has been specified, the Resource Compiler
will not be able to open the .rc2 file.
RESOLUTION
==========
To work around this problem, do the following in the project's .rc file:
- Replace all references to code_page(1252) with the proper code_page.
- Replace all references to "Language 9,1" with the proper language,
sub-language code pair.
There are three places in a typical .rc file to change these values:
1. In the TEXTINCLUDE section, TEXTINCLUDE 3 has a reference to the code_page
and Language:
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 9, 1\r\n"
"#pragma code_page(1252)\r\n"
"#endif\r\n"
"#include ""res\\appwizdll.rc2"" // Non-Microsoft Visual C++
// edited.
"\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#endif"
"\0"
END
2. Immediately after the TEXTINCLUDE section, a set of preprocessor definitions
has a reference to the code_page and Language:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif
3. At the end of the .rc file, there is a last set of preprocessor definitions
with a reference to the code_page and Language:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif
#include "res\\appwizdll.rc2" // Non-Microsoft Visual C++ edited
// resources.
#include "afxres.rc" // Standard components
#endif
To make these changes, open the project's .rc file clicking Open on the File menu
and selecting Open As type of "Text" instead of "Auto." Visual C++ will close
the resource editor if it is open for this project.
STATUS
======
Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article. This problem was corrected in Microsoft Visual C++,
version 6.0.
(c) Microsoft Corporation 1999, All Rights Reserved.
Contributions by Jason Strayer, Microsoft Corporation
Additional query words:
======================================================================
Keywords : kbcode kberrmsg kbtool kbwizard kbMFC kbVC500bug kbVC600fix kbGrpDSTools kbNoUpdate
Technology : kbVCsearch kbAudDeveloper kbAppWizard
Version : winnt:5.0
Issue type : kbbug
Solution Type : kbfix
=============================================================================