PRB: C2189 and C2857 Errors When AFXDB.H Used for UNICODE (128894)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++, 32-bit Professional Edition 2.0
- Microsoft Visual C++, 32-bit Professional Edition 2.1
This article was previously published under Q128894 SYMPTOMS
When attempting to build an AppWizard-generated DLL or EXE with ODBC
support, two compiler errors are generated when STDAFX.CPP is compiled :
<Path>\msvc20\mfc\include\afxdb.h(15): error C2189: #error:
Database classes not supported in this library variant.
<Path>\stdafx.cpp(7): error C2857: '#include' statement
specified with the /Ycstdafx.h command-line option was
not found in the source file.
CAUSE
The project settings for the DLL or EXE have been changed so that
_UNICODE is defined, instead of _MBCS.
When using AppWizard to generate a DLL or an EXE with ODBC support,
AppWizard automatically adds the following to the STDAFX.H file it
generates:
#include <afxdb.h>
However, ODBC does not support Unicode, so MFC produces a compilation error
whenever an attempt is made to build a Unicode application or DLL that
includes the MFC database classes header file (AFXDB.H).
RESOLUTION- If you are not using the MFC database classes, remove the following line
from your STDAFX.H file:
#include <afxdb.h>
- If you are using the MFC database classes, do not build a Unicode
variant of your DLL or EXE. The database classes rely on ODBC, which
does not support Unicode.
STATUS
This behavior is by design.
Modification Type: | Major | Last Reviewed: | 10/17/2003 |
---|
Keywords: | kbDatabase kbDLL kbprb kbwizard KB128894 |
---|
|