Windows 7下找(zhǎo)不到msxml.dll的錯誤的解決方法
裝(zhuāng)了windows7,並安裝了vs2005,其他(tā)工程(chéng)沒有問題,但是構建某個工程時卻出現了
error: can't find msxml.dll
在system32目錄下一找(zhǎo)才發現原來確實沒有這個文件,從虛擬機(jī)的(de)xp裏拷了個過來,嘿嘿竟然編過了。
windows 7 還不是十分成熟,雖(suī)然比vista好用了不少,但要超(chāo)過(guò)xp,還有很多細節(jiē)需要完善。
解析XML文件使用到了微軟的msxml ,在xp下使用的時候,隻(zhī)要#import <msxml.dll>編譯就可以順利通過(guò),
當把工程移植到Vista上(shàng)的(de)時候就會(huì)遇到找不到msxml.dll的錯誤。
原來(lái)在Vista上msxml.dll升級為msxml6.dll,
隻要把#import <msxml.dll>改(gǎi)成#import <msxml6.dll>
相應using namespace MSXML改成using namespace MSXML2編譯即可通(tōng)過
那麽Vista下編譯後的可執行(háng)文件是不(bú)是(shì)不可以在XP下使用呢?
網上的有(yǒu)種方法是:
#if (_WIN32_WINNT >= 0x0600)
#import <msxml6.dll>
#else
#import <msxml.dll>
#endif
這種做(zuò)法是沒有必要的
下麵是一位網友給出的解釋:
COM組件的使用方式,開發環境和運行環境是不同的。開發環境要使用最新(xīn)的SDK才能支持最新的操作係統,所(suǒ)以(yǐ)要用#import msxml6.dll,但是到了運行環境,程序並不會直接加(jiā)載msxml6.dll,而是通過CoCreateInstance來加載的,傳遞的是PROGID或者(zhě)CLSID,係統會在注冊表中找到對應的dll文件,如果運行在vista下,係(xì)統會幫你加載(zǎi)msxml6.dll,如果在(zài)xp環境下,係統幫你加載msxml.dll。但是程(chéng)序不能使用IXmlDocument6,因為在XP環境下,msxml.dll並不支持這個版本。
這個特征是(shì)COM最基本的特征:保持二進製兼容,即使組件版本升(shēng)級(jí),也能在新(xīn)環境下運行舊版的程序,因為新版組件一定會保留舊版組件(jiàn)的接口。
關(guān)鍵詞:Windows7,msxml.dll,解決方法
閱讀本文後您有什麽感想? 已有 人給出(chū)評價!
- 6
- 22066
- 6
- 6
- 52
- 6