MFC apps must not #include <windows.h>
详细提示:
1>d:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afxv_w32.h(16) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
出错位置代码:
#ifdef _WINDOWS_
#error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
最大的可能是:直接或间接包括afx_w32.h之前,直接或间接包括了windows.h。由于fx_w32.h和windows.h都使用了#pragma once,所以只有第一次include有效。
注意:VC开发环境会定义一个宏_WINDOWS_,和这个没关系,后面多一个下划线。
afxwin.h包括了afx.h,afx.h包括了afxver_.h,afxver_.h包括了afxv_w32.h,简称afxwin.h->afx.h->afxver_.h->afxv_w32.h。
类似的还有:afxmt.h->afx.h->afxver_.h->afxv_w32.h。
解决方案:
尽量不使用windows.h、winsock.h、winsock2.h,而是用afxwin.h和afxsock.h。猜测:前者以win开头,后者以afx开头。
afxsock.h先包括afxwin.h后包括winsock2.h。
验证环境:VC8(VS2005)
如何查看是哪个源文件直接或间接包括了windows.h?
看是在编译那个源文件时,报的错。如果看不清楚,builid->clean一下。
----
>正在编译...
1>testexeDlg.cpp
1>d:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afxv_w32.h(16) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
------
说明是testexeDlg.cpp直接或间接包括了windows.h。
已知某个源文件直接或间接包括了windows.h,如何知道此文件?
暂时注释掉此源文件和头文件的有效代码,然后依次注释include语句。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!