title: Error C2011: 'MSXML2::IXMLDOMImplementation' : 'struct' type redefinition
body: <p>I am changing my C++ project, which was earlier in VC6 and now being migrated to VS 2008, to use MSXML 6 instead of the earlier MSXML 3.
  When the code was in VC6 we were using MSXML3 by importing it</p>
  
  <pre><code># import "msxml3.dll"
  </code></pre>
  
  <p>This was replaced with </p>
  
  <pre><code># import "msxml6.dll"
  </code></pre>
  
  <p>After this when I compile the project I get this and several other similar errors
  Error C2011: 'MSXML2::IXMLDOMImplementation' : 'struct' type redefinition</p>
  
  <p>The above error is in the msxml3.tlh file.</p>
  
  <p>1) Why is msxml3 still being used? </p>
  
  <p>2) I narrowed down the problem to MSXML.h which is somehow automatically being included in my project. Why is this? </p>
  
  <p>3) Which version of MSXML is being referenced in MSXML.h? </p>
  
  <p>4) Why in the world does VC++ automatically include so many header files? What if I dont want some header files to be included? </p>
  
  <p>5) What is the right way of using MSXML6 in a c++ project? #import, header file?????</p>
  
  <p><strong>6) How do I fix this problem?</strong></p>
  
  <p>Give me .net any time. Much cleaner. A VC++ project is a mess.</p>