在 stdafx.h 中声明 <afxdb.h> 时出错

Posted

技术标签:

【中文标题】在 stdafx.h 中声明 <afxdb.h> 时出错【英文标题】:error in declaring <afxdb.h> inside stdafx.h 【发布时间】:2012-02-06 09:43:45 【问题描述】:

我正在尝试使用 CDatabase,为此我在 stdafx.h 文件中声明了 &lt;afxdb.h&gt;。 当我编译此代码时,我收到错误“WINDOWS.H 已包含。MFC 应用程序不得#include &lt;windows.h&gt;”。为什么会这样?这不是使用 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 &lt;tchar.h 之后添加#include &lt;afxdb.h&gt;> 我得到指定的错误。

谢谢

【问题讨论】:

可以给出一些示例代码吗?看起来您尝试多次加载头文件。看看***.com/q/2939368/1141095 也许更有条理?您可以更改您的问题并将代码放在那里。请记住,人们可能只有您提供给他们的信息。 【参考方案1】:

只需添加以下几行:

#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 以便链接器满意并且不会打扰您遇到了未解决的外部符号错误。

希望这会有所帮助;)

【讨论】:

太棒了..这行得通。但是在我声明一个 CDatabase 对象后,我得到了一些奇怪的错误。 1:) 未解析的外部符号 __endthreadex 2:) 未解析的外部符号 __beginthreadex 知道这可能是什么吗? 项目属性->常规->使用MFC:将Use Standard Windows Libraries改为Use MFC in a Static Library 非常感谢。有用。如果你不介意,你能解释一下这个变化是如何影响它的吗?我是新手 MFC 是一个,这意味着您可以像使用任何其他库一样使用它。由于包含 afx*.h 标头,您知道 Visual Studio 的接口和 Intellisense,因为它具有这些方法的声明。但如果您不提供有关库文件的信息,它们的实现将不可用。【参考方案2】:

您需要先#include afx-headers。之后你可能仍然#include &lt;windows.h&gt;,尽管这不是必需的。因此,只需更改包含的顺序即可。

【讨论】:

太棒了..这行得通。但是在我声明一个 CDatabase 对象后,我得到了一些奇怪的错误。 1:) 未解析的外部符号 __endthreadex 2:) 未解析的外部符号 __beginthreadex 知道这可能是什么吗?

以上是关于在 stdafx.h 中声明 <afxdb.h> 时出错的主要内容,如果未能解决你的问题,请参考以下文章

尝试在类定义中声明数组时出错

错误 C1083:无法打开包含文件:“stdafx.h”

错误 C1083:无法打开包含文件:“stdafx.h”

extern的用法

致命错误 C1010 - Visual Studio 中的“stdafx.h”如何纠正?

GDIPlus的使用准备工作