2012-06-07 25 views
1

在Visual Studio 2010中,如果我啓動一個控制檯項目並且#include這可以正常工作,但是如果我啓動一個win32項目和#include,它將在編譯過程中返回許多錯誤。在visual C++上使用msxml6.h的錯誤

爲什麼?

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 

+0

我只讀星期一頭腦。你會得到什麼錯誤? – Joe

+0

你能發佈一個完整的代碼文件作爲控制檯項目,buut失敗作爲win32? – Attila

+0

只需在Visual Studio中開始一個新項目,然後嘗試。 –

回答

1

問題是stdafx.h文件中的#define WIN32_LEAN_AND_MEAN,刪除此條目進行解析。

2

缺少的是#include <ole2.h>或其中的某個部分。
定義WIN32_LEAN_AND_MEAN時Ole2是從Windows.h中刪除的標題之一。
如果定義了INC_OLE2,則可以添加Ole2。

如果你提供了一個頭,不知道什麼是用戶可以定義,那麼你可以去安全

#if !defined(INC_OLE2) && defined(WIN32_LEAN_AND_MEAN) 
#include <ole2.h> 
#endif 
#include <msxml2.h>