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