#include 多余的问题

时间:2022-12-25 15:04:58
e:\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>
说是#include <windows.h>多余,但是我的MFC程序里面没有#include<windows.h>,这是怎么回事?
本来程序还好,但是尝试连接数据库之后,就报这个错误

15 个解决方案

#1


MFC自己在afxwin.h包含了 你去掉windows.h即可,不用自己包含的

#2


引用 1 楼 hurryboylqs 的回复:
MFC自己在afxwin.h包含了 你去掉windows.h即可,不用自己包含的

微软提供的源文件里面么?

#3


包含路径是"stdafx.h"/<afxwin.h> /<afx.h>/<afxver_.h>/<afxv_w32.h>/<windows.h>
所以你不用在mfc程序中单独包含windows.h

#4


引用 3 楼 dcmilan 的回复:
包含路径是"stdafx.h"/<afxwin.h> /<afx.h>/<afxver_.h>/<afxv_w32.h>/<windows.h>
所以你不用在mfc程序中单独包含windows.h

现在我的程序里面没有包含#include <windows.h>,我搜索的话搜索不到

#5


把stdafx.h中#import "C:\Program Files\Common Files\System\ado\msado15.dll" 这一行都去掉。

#6


引用 1 楼 hurryboylqs 的回复:
MFC自己在afxwin.h包含了 你去掉windows.h即可,不用自己包含的

现在我的程序里面没有包含#include <windows.h>,我搜索的话搜索不到

#7


或者把下面的注释了
//#ifndef _AFX_NO_DB_SUPPORT
//#include <afxdb.h>                      // MFC ODBC 数据库类
//#endif // _AFX_NO_DB_SUPPORT
//
//#ifndef _AFX_NO_DAO_SUPPORT
//#include <afxdao.h>                     // MFC DAO 数据库类
//#endif // _AFX_NO_DAO_SUPPORT

#8


引用 5 楼 lm841984 的回复:
把stdafx.h中#import "C:\Program Files\Common Files\System\ado\msado15.dll" 这一行都去掉。

这是要连接数据库的呀

#9


你可以试一试

#10


引用 7 楼 lm841984 的回复:
或者把下面的注释了
//#ifndef _AFX_NO_DB_SUPPORT
//#include <afxdb.h>                      // MFC ODBC 数据库类
//#endif // _AFX_NO_DB_SUPPORT
//
//#ifndef _AFX_NO_DAO_SUPPORT
//#include <afxdao.……

我用的是ADO,没有上边的代码

#11


#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
这句代码,放在中下部分

#12


引用 11 楼 lm841984 的回复:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
这句代码,放在中下部分

这样就可以了,但是这个警告是什么意思呢,问题出在哪里\debug\msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned,指向程序中: adCreateStructDoc = -2147483648这一句

#13


微软建议不要去管的一个警告 

#14


或者
#pragma warning(disable:4146)
----------------------------------------------------------
#import "c:\Program Files\common files\system\ado\msado20.tlb" no_namespace rename("EOF","adoEOF")
----------------------------------------------------------
#pragma warning(default:4146) 

#15


引用 13 楼 lm841984 的回复:
微软建议不要去管的一个警告

多谢

#1


MFC自己在afxwin.h包含了 你去掉windows.h即可,不用自己包含的

#2


引用 1 楼 hurryboylqs 的回复:
MFC自己在afxwin.h包含了 你去掉windows.h即可,不用自己包含的

微软提供的源文件里面么?

#3


包含路径是"stdafx.h"/<afxwin.h> /<afx.h>/<afxver_.h>/<afxv_w32.h>/<windows.h>
所以你不用在mfc程序中单独包含windows.h

#4


引用 3 楼 dcmilan 的回复:
包含路径是"stdafx.h"/<afxwin.h> /<afx.h>/<afxver_.h>/<afxv_w32.h>/<windows.h>
所以你不用在mfc程序中单独包含windows.h

现在我的程序里面没有包含#include <windows.h>,我搜索的话搜索不到

#5


把stdafx.h中#import "C:\Program Files\Common Files\System\ado\msado15.dll" 这一行都去掉。

#6


引用 1 楼 hurryboylqs 的回复:
MFC自己在afxwin.h包含了 你去掉windows.h即可,不用自己包含的

现在我的程序里面没有包含#include <windows.h>,我搜索的话搜索不到

#7


或者把下面的注释了
//#ifndef _AFX_NO_DB_SUPPORT
//#include <afxdb.h>                      // MFC ODBC 数据库类
//#endif // _AFX_NO_DB_SUPPORT
//
//#ifndef _AFX_NO_DAO_SUPPORT
//#include <afxdao.h>                     // MFC DAO 数据库类
//#endif // _AFX_NO_DAO_SUPPORT

#8


引用 5 楼 lm841984 的回复:
把stdafx.h中#import "C:\Program Files\Common Files\System\ado\msado15.dll" 这一行都去掉。

这是要连接数据库的呀

#9


你可以试一试

#10


引用 7 楼 lm841984 的回复:
或者把下面的注释了
//#ifndef _AFX_NO_DB_SUPPORT
//#include <afxdb.h>                      // MFC ODBC 数据库类
//#endif // _AFX_NO_DB_SUPPORT
//
//#ifndef _AFX_NO_DAO_SUPPORT
//#include <afxdao.……

我用的是ADO,没有上边的代码

#11


#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
这句代码,放在中下部分

#12


引用 11 楼 lm841984 的回复:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
这句代码,放在中下部分

这样就可以了,但是这个警告是什么意思呢,问题出在哪里\debug\msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned,指向程序中: adCreateStructDoc = -2147483648这一句

#13


微软建议不要去管的一个警告 

#14


或者
#pragma warning(disable:4146)
----------------------------------------------------------
#import "c:\Program Files\common files\system\ado\msado20.tlb" no_namespace rename("EOF","adoEOF")
----------------------------------------------------------
#pragma warning(default:4146) 

#15


引用 13 楼 lm841984 的回复:
微软建议不要去管的一个警告

多谢