Windows 7下找不到msxml.dll的错误的解决方法
装了windows7,并安装了vs2005,其他工程没有问题,但是构建某个工程时却出现了
error: can't find msxml.dll
在system32目录下一找才【yī zhǎo cái】发现原【fā xiàn yuán】来确实【lái què shí】没有这💲个文件🔐,从虚拟🚯机的xp里拷了🥢个过来,嘿嘿竟【hēi hēi jìng】📘然编过【rán biān guò】了。
windows 7 还不是【hái bú shì】十分成⛩熟,虽然比vista好用了【hǎo yòng le】💀不少,但要超过【guò】xp,还有很【hái yǒu hěn】👖多细节需要完🛬善。
解析XML文件使【wén jiàn shǐ】用到了【yòng dào le】微软的🏷msxml ,在xp下使用的时候,只要🐕#import <msxml.dll>编译就【biān yì jiù】🥤可以顺【kě yǐ shùn】🍚利通过,
当把工【dāng bǎ gōng】程移植【chéng yí zhí】🕤到Vista上的时候就会遇到找不到【bú dào】🥪msxml.dll的错误🤕。
原来在Vista上msxml.dll升级为msxml6.dll,
只要把【zhī yào bǎ】🎑#import <msxml.dll>改成#import <msxml6.dll>
相应【xiàng yīng】⛷using namespace MSXML改成🔶using namespace MSXML2编译即【biān yì jí】可通过
那么Vista下编译后的可【hòu de kě】执行文🚊件是不【jiàn shì bú】是不可Ⓜ以在【yǐ zài】XP下使用📪呢?
网上的有种方【yǒu zhǒng fāng】🥠法是:
#if (_WIN32_WINNT >= 0x0600)
#import <msxml6.dll>
#else
#import <msxml.dll>
#endif
这种做法是没有必要的
下面是一位网友给出的解释:
COM组件的【de】📺使用【shǐ yòng】🍲方式【fāng shì】🚘,开发环境和运行环境🕛是不同的【de】♟。开发环境要使用【shǐ yòng】🍲最新的【zuì xīn de】♟SDK才能支持最新的【zuì xīn de】♟操作系统,所以要用【yòng】🍲#import msxml6.dll,但是到了运行【le yùn háng】环境🕛,程序并【chéng xù bìng】🛄不会直接加载【jiē jiā zǎi】💶msxml6.dll,而是通🕵过CoCreateInstance来加载的【de】♟,传递的【de】♟是PROGID或者🏴CLSID,系统会【xì tǒng huì】🌛在注册【zài zhù cè】表中找【biǎo zhōng zhǎo】到对应【dào duì yīng】的【de】♟dll文件,如果运【rú guǒ yùn】行在vista下🔫,系统会【xì tǒng huì】🌛帮你加【bāng nǐ jiā】载msxml6.dll,如果在xp环境下【huán jìng xià】😴,系统帮⏳你加载msxml.dll。但是程【dàn shì chéng】序不能使用【shǐ yòng】🍲IXmlDocument6,因为在XP环境下【huán jìng xià】😴,msxml.dll并不支持这个版本🤓。
这个特征是🍯COM最基本🌀的特征:保持二进制兼容,即使组🙏件版本【jiàn bǎn běn】升级🥍,也能在【yě néng zài】新环境下运行【xià yùn háng】🥃旧版的【jiù bǎn de】🤴程序,因为新【yīn wéi xīn】版组件【bǎn zǔ jiàn】一定会保留旧版组件【bǎn zǔ jiàn】的接口【de jiē kǒu】🎗。
关键词:Windows7,msxml.dll,解决方【jiě jué fāng】法⚡
阅读本文后您有什么感想? 已有 人给出评价!
- 6
- 22066
- 6
- 6
- 52
- 6