问题
In visual studio 2010 if I start a console project and #include this works fine, but if I start a win32 project and #include ,it returns many errors during compilation.
Why?
Error 1 error C2146: syntax error : missing ';' before identifier 'IXMLDOMImplementation' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 49 1 provamsxml6
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 49 1 provamsxml6
Error 3 error C2146: syntax error : missing ';' before identifier 'IXMLDOMImplementation' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 49 1 provamsxml6
Error 4 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 49 1 provamsxml6
Error 5 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 49 1 provamsxml6
Error 6 error C2086: 'int IXMLDOMImplementation' : redefinition c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 49 1 provamsxml6
Error 7 error C2146: syntax error : missing ';' before identifier 'IXMLDOMNode' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 55 1 provamsxml6
Warning 8 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 55 1 provamsxml6
Error 9 error C2146: syntax error : missing ';' before identifier 'IXMLDOMDocumentFragment' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 61 1 provamsxml6
Warning 10 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 61 1 provamsxml6
Error 11 error C2146: syntax error : missing ';' before identifier 'IXMLDOMDocument' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 67 1 provamsxml6
Warning 12 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 67 1 provamsxml6
Error 13 error C2146: syntax error : missing ';' before identifier 'IXMLDOMDocument2' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 73 1 provamsxml6
Warning 14 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 73 1 provamsxml6
Error 15 error C2146: syntax error : missing ';' before identifier 'IXMLDOMDocument3' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 79 1 provamsxml6
Warning 16 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 79 1 provamsxml6
Error 17 error C2146: syntax error : missing ';' before identifier 'IXMLDOMNodeList' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 85 1 provamsxml6
Warning 18 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 85 1 provamsxml6
Error 19 error C2146: syntax error : missing ';' before identifier 'IXMLDOMNamedNodeMap' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 91 1 provamsxml6
Warning 20 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 91 1 provamsxml6
Error 21 error C2146: syntax error : missing ';' before identifier 'IXMLDOMCharacterData' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 97 1 provamsxml6
Warning 22 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 97 1 provamsxml6
Error 23 error C2146: syntax error : missing ';' before identifier 'IXMLDOMAttribute' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 103 1 provamsxml6
Warning 24 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 103 1 provamsxml6
Error 25 error C2146: syntax error : missing ';' before identifier 'IXMLDOMElement' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 109 1 provamsxml6
Warning 26 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 109 1 provamsxml6
Error 27 error C2146: syntax error : missing ';' before identifier 'IXMLDOMText' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 115 1 provamsxml6
Warning 28 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 115 1 provamsxml6
Error 29 error C2146: syntax error : missing ';' before identifier 'IXMLDOMComment' c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 121 1 provamsxml6
Warning 30 warning C4091: '' : ignored on left of 'interface' when no variable is declared c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msxml6.h 121 1 provamsxml6
回答1:
What is missing is #include <ole2.h>
or some part there of.
When WIN32_LEAN_AND_MEAN
is defined Ole2 is one of the headers removed from Windows.h
.
Ole2 can be added back if INC_OLE2
is defined.
If your providing a header and not sure what the users might define then you could go for safety
#if !defined(INC_OLE2) && defined(WIN32_LEAN_AND_MEAN)
#include <ole2.h>
#endif
#include <msxml2.h>
回答2:
The problem is the #define WIN32_LEAN_AND_MEAN in stdafx.h file, remove this entry to resolve.
来源:https://stackoverflow.com/questions/10934270/errors-using-msxml6-h-on-visual-c