我想在原有的c++程序中加入数据库支持代码,因为要用到cdatabase,crecordset类,所以要在stdafx.h中加入afxdb.h,可是一加入就出现如下错误:
c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>我的stdafx.h中有如下的头文件:
// Windows Header Files:
#include <windows.h>// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <assert.h>我知道可能是头文件重复调用的缘故,可是到底该怎么做才能解决问题,请大家帮忙一下了,谢谢了先。

解决方案 »

  1.   

    不要把这一句:#include <windows.h>
    加在#ifdef 和 #endif 之间
      

  2.   

    不要在stdafx.h里加,这个头文件是个垃圾文件,建议去掉。你可以加在引用CDatabase类的头文件中
      

  3.   

    afxdb.h的包括放在尽量靠下的地方,所有其他文件包括完成后再包括这个文件
      

  4.   

    #include <windows.h>去掉这个语句
      

  5.   

    总之在afxdb.h的包括前不要再有#include <windows.h>,如果必须有的话,可以把它放在afxdb.h的包括后面
      

  6.   

    WINDOWS.H already included.  MFC apps must not #include <windows.h>
    你用MFC就不用#include <windows.h>这个了!
    如果是重用你在里stdafx.h加了#include <windows.h>,别的地方就不要再#include <windows.h>,只要有#include "stdafx.h"就可以了!
      

  7.   

    我在不影响程序的情况下去掉了所有不必要的windows.h,可是一加上afxdb.h就又出现原来的问题,怎么会这样?
      

  8.   

    是不是windows.h和afxdb.h冲突啊 ,怎么我不加afxdb.h就好好的,一加就出现前面的错误提示????
      

  9.   

    是不是windows.h和afxdb.h冲突啊 ,怎么我不加afxdb.h就好好的,一加就出现前面的错误提示????
    是的,所以在afxdb.h的包括之前不能有windows.h
      

  10.   

    按下面试试:
    1. 所有".cpp"文件加入#include"stdafx.h"
    2.你建的工程是console? 在工程设置中,点击link标签,底部:subsystem:后的console改成windows
      good luck!
      

  11.   

    这个问题好像说过好几次了吧去掉#include <windows.h>
      

  12.   

    to bluebohe:
    就是说afxdb.h必须在windows.h前被调用,才可以?还是说两者不能共存?
      

  13.   

    我把afxdb.h加到了windows.h前面,没有出现fatal错误,但是出现了warning错误,希望不会影响运行。谢谢大家了。:)
      

  14.   

    能够共存,warn应该没问题,VC经常警告自己的代码