ошибка в объявлениивнутри stdafx.h - PullRequest
0 голосов
/ 06 февраля 2012

Я пытаюсь использовать CDatabase и для этого я объявил <afxdb.h> в файле stdafx.h. Когда я компилирую этот код, я получаю сообщение об ошибке «WINDOWS.H уже включен. Приложения MFC не должны #include <windows.h>». Почему это происходит? Разве это не правильный заголовочный файл для использования CDatabase? Это сгенерированный по умолчанию код ...

#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers


// Windows Header Files:
#include <windows.h>

// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

Если я добавлю #include <afxdb.h> после #include <tchar.h>, я получу указанную ошибку.

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Просто добавьте эти строки:

#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>   <--
#include <afxext.h>   <--
#include <afxdb.h>    <--

// Windows Header Files:
#include <windows.h>

Но поскольку вы ранее не использовали MFC в этом проекте, вам, вероятно, придется изменить свойства проекта -> Общие -> Использование MFC с Use Standard Windows Libraries на Use MFC in a Static Library, чтобы компоновщик был удовлетворен и не беспокоил Вы с неразрешенным внешним символом ошибок.

Надеюсь, это поможет;)

0 голосов
/ 06 февраля 2012

Сначала нужно # включить заголовки afx.После этого вы все равно можете #include <windows.h>, хотя в этом нет необходимости.Так что просто измените порядок ваших включений, и он будет работать.

...