XP工程移植Win7上找不到msxml.dll的錯誤

來源:互聯網
上載者:User

解析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://sites.securepaynet.net/

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.