Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions

fatal error C1189: #error :  WINDOWS.H already included.

Posted on 2006-06-26
Last Modified: 2008-01-09
First of all, I've never used MFC.   I'm mainly an ATL developer so dont kill me for this question..

I'm needing to talk to a web server via XML from an ATL service that uses MFC and the service is calling:
CInternetSession, CHttpConnection, and CHttpFile, which I've never used..   I'm a Winsock type of guy..

The service is having some compiling issues and after looking these functions up I found the project didnt have #include "afxinet.h" and so when I add them I get a fatal error C1189: #error :  WINDOWS.H already included.

How do I get around this error??

Here is the code it's using..

      CInternetSession session("temp", 1);
      CHttpConnection* pConn = NULL;
      CHttpFile* pFile = NULL;

      char szBuff[10000];
      DWORD dwRet;
      CString csWk;

      CString csURL = "domain.com";
      CString csContext = "/dir/path";

            INTERNET_PORT nPort = 443;

            pConn = session.GetHttpConnection(csURL, INTERNET_FLAG_DONT_CACHE, nPort);
            pFile = pConn->OpenRequest(CHttpConnection::HTTP_VERB_POST, csContext, NULL, 1, NULL, NULL, INTERNET_FLAG_SECURE);

            CString csXML = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>......";
            int nLen = csXML.GetLength();
            CString csRet = "";

            pFile->SendRequest(NULL, 0, ((void*)(LPCSTR)csXML), nLen);

            if (dwRet == HTTP_STATUS_OK)
                  UINT nRead;

                  while (true)
                        nRead = pFile->Read(szBuff, 4095);
                        if (nRead <= 0)

                        szBuff[nRead] = 0;
                        csRet += szBuff;
      catch (CInternetException* pEx)
            //. . .

      return 1;
Question by:Chizl
  • 3
  • 3
  • 2
  • +1
LVL 12

Expert Comment

ID: 16989913
First you compile by not including the header file
#include "afxinet.h"
LVL 12

Expert Comment

ID: 16989939
Actually somehow the include file "windows.h" is included again
LVL 48

Expert Comment

ID: 16989997
Where did you add exactly this include line?
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.


Author Comment

ID: 16990105
Rajeev, it will not compile and I get like 46 errors and yea, somehow.....
First error being:
H:\Code\C++\MyApp\MyClass.cpp(71) : error C2065: 'CInternetSession' : undeclared identifier

I put #include "afxinet.h" at the top of my cpp.

// MyClass.cpp: implementation of the CMyClass class.

#include "stdafx.h"
#include "MyClass.h"
#include "afxinet.h"
LVL 12

Expert Comment

ID: 16990156
#include "stdafx.h"
and check whether you have an entry of
#include <windows.h>

If it is there then simply remove it.
LVL 39

Accepted Solution

itsmeandnobodyelse earned 500 total points
ID: 16990270
>>>> If it is there then simply remove it.

No. stdafx.h is the header file for the Precompiled Header and *must* include windows.h.

>>>> afxinet.h

To get around the error you should include afxinet.h in the stdafx.h (below include afx.h == MFC). The make a Rebuild All (cause Precompiled Header needs to get replaced).

Regards, Alex
LVL 39

Expert Comment

ID: 16990374
FYI:  MFC is optimized to use Precompiled Headers (PCH) via stdafx.h. That means that in a MFC project any cpp file (which is not excluded from PCH) needs to include "stdafx.h" prior to any other include file. There is one cpp file in project - normally stdafx.cpp - which creates the PCH. When compiling cpp files different from stdafx.cpp the compiler ignores any definition, statement or include above the include of "stdafx.h" and takes the PCH instead, what normally speeds up compilation time cause stdafx includes whole WINAPI and MFC.

The problem you run into is that afx.h the main header of MFC checks whether it was included prior to any other (Windows or MFC) header. That is to prevent user to put include statements above the include of stdafx.h where these includes would be ignored in case of PCH.

The way out is either to include additional header files below stdafx.h or to include these headers in stdafx.h - thus pushing them to PCH - below the incude of afx.h.

You also could turn off PCH option for the project or one/some individual cpp(s). However, the latter only helps if you still consider that afx.h must be included prior to any of the other MFC or WINAPI header files.

Regards, Alex

Author Comment

ID: 16996899
I'm out of office today, but as soon as I get back tonight, I'll try this..

Author Comment

ID: 16998088
itsmeandnobodyelse, you are the best!


Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question