找不到MSXML2命名空間


以前在XP上開發的一個程序,今天在Win7上發現無法運行,調試時提示“找不到MSXML2命名空間”,添加引用時找不到“MSXML2”,后來發現原來是這樣,下面是別人寫的:

解析XML文件使用到了微軟的msxml ,在xp下使用的時候,只要#import <msxml.dll>編譯就可以順利通過,

當把工程移植到Vista上的時候就會遇到找不到 msxml.dll的錯誤。

原來在Vista上msxml.dll升級為msxml6.dll,

只要把#import <msxml.dll>改成#import <msxml6.dll>

相應using namespace MSXML改成using namespace MSXML2編譯即可通過

 

那么Vista下編譯后的可執行文件是不是不可以在XP下使用呢?

網上的有種方法是: 
#if (_WIN32_WINNT >= 0x0600) 
#import <msxml6.dll> 
#else 
#import <msxml.dll> 
#endif 

這種做法是沒有必要的

 

下面是一位網友給出的解釋:

COM組件的使用方式,開發環境和運行環境是不同的。開發環境要使用最新的SDK才能支持最新的操作系統,所以要用#import msxml6.dll,但是到了運行環境,程序並不會直接加載msxml6.dll,而是通過CoCreateInstance來加載的,傳遞的是PROGID或者CLSID,系統會在注冊表中找到對應的dll文件,如果運行在vista下,系統會幫你加載msxml6.dll,如果在xp環境下,系統幫你加載msxml.dll。但是程序不能使用IXmlDocument6,因為在XP環境下,msxml.dll並不支持這個版本。 

這個特征是COM最基本的特征:保持二進制兼容,即使組件版本升級,也能在新環境下運行舊版的程序,因為新版組件一定會保留舊版組件的接口。

 

轉:http://blog.csdn.net/immcss/article/details/3862184?reload

 

添加 引用之后:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM