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