PRB: C2189 and C2857 Errors When AFXDB.H Used for UNICODE
ID: Q128894
|
The information in this article applies to:
-
The Microsoft Foundation Classes (MFC), included with:
-
Microsoft Visual C++ 32-bit Edition, versions 2.0, 2.1
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.
Additional query words:
2.00 2.10 dll unicode database
Keywords : kbwizard kbDatabase kbDLL kbMFC kbODBC kbVC
Version : winnt:
Platform : winnt
Issue type :