致命错误C1189:#error:WINDOWS.H已包含在内。 MFC应用程序不得#include <windows.h> </windows.h>

时间:2014-03-21 18:21:03

标签: c++ visual-studio-2010 mfc sql-server-ce stdafx.h

我有一个使用SQL Compact Server的Visual Studio 6.0项目。 我正在尝试更新在Visual Studio 2012上使用的解决方案,但我有以下错误:

fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>

我的stdafx.h包含winsock2.h,他们有:

#ifndef _INC_WINDOWS
#include <windows.h>
#endif /* _INC_WINDOWS */

有办法压制错误吗?我该怎么办?当我间接删除包含它的文件的windows.h时,我得到error C2011: 'IRowsetBookmark' : 'struct' type redefinition

我已经在这里看到了有关此错误的其他问题,但没有任何建议对我有用。


- 更新:

我解决了error C2011: 'IRowsetBookmark' : 'struct' type redefinition在stdafx.h顶部添加以下行:

#if !defined(__IRowsetBookmark_INTERFACE_DEFINED__)
#define __IRowsetBookmark_INTERFACE_DEFINED__
#endif

#if !defined(__IRowsetBookmark_FWD_DEFINED__)
#define __IRowsetBookmark_FWD_DEFINED__
#endif

但是我得到error C2143: syntax error : missing ',' before '<' 在那条线上:

class CArrayRowset :
    public CVirtualBuffer<T>,
    public TRowset
{

是否有可能在我的stdfx.h上添加这些行,我搞砸了一些类声明?

2 个答案:

答案 0 :(得分:1)

尝试定义_INC_WINDOWS,然后将winsock2.h包含在void中,包括win.h

答案 1 :(得分:1)

我发现这个问题/答案可能会帮助每个需要迁移的人。

Migrating a big project in MFC from Visual C++ 6.0 to Visual Studio 2005