vc2008编译问题

vc2008编译问题

vc2008确实好使,不过缺陷也非常明显,只要是它编译的东西,在其他电脑经常会出现无法顺利运行的情况,最常见的错误就是:“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”

经过各种努力,最后发现,一般情况下只需要安装一下vcredist_x86.exe这个vc的可重发行组件包就可以了。其主要原理是因为vc2008的版本比较高,其编译时链接的相关dll版本比xp下的高太多,而我们在xp下运行的时候调用的是老版本的dll,所以出现了问题。安装新版的可重发行组件包后,旧版本的dll被替换成新版本的,问题就解决了。

可是又出现了新的问题,总不能让用户使用我们软件的时候,非要去安装其他组件吧~~而且,其他很多软件都是用vc开发的,这些软件为什么不需要呢?本着钻牛角尖的态度,进行了更深一步的探索;

最近研究ccv,突然发现ccv的bin目录下有一个Microsoft.VC90.CRT目录,下面有几个dll文件,还有一个manifast文件。看到这个不禁眼前一亮,在我的程序中把这几个文件打包进去就ok了吧?于是进行尝试,查找本机安装vs2008目录下的Microsoft.VC90.CRT目录一顿cp,结果,很沮丧,测试失败~~告一段落~~

某天又在网上发现有人在帖子里的回答,其中两个字吸引了我:“版本”。我灵机一动,赶紧去查看版本,发现我当前的版本是9.0.30729.4148,而帖子里的manifast文件中的版本是9.0.21022.8。于是,我赶紧找了一个这个版本的下载下来,替换我的程序中的这几个dll和manifast,再运行,果然成功了。

 

因此得到以下结论:

1、可重发行组件包是没问题的,肯定可以用,因为它替换了系统的这几个dll,所以可行;

2、如果不想在自己的“绿色”软件的基础上再要安装这么个组件,或者自己的非绿色软件在安装的过程中再安装这么个组件,只需要处理这几个关键的dll就行啦。

3、即使有了这几个dll也不一定行,一定要注意版本!实在不行这几个版本多试一试。我到现在还不太明白,我的vs2008的版本是9.0.30729.4148,编译出来的东西应该也是这个版本的啊,可是为什么用了老版本才好用,新版本的反而不好用呢?

4、具体文件如下:

Microsoft.VC90.CRT.manifest

msvcm90.dll

msvcp90.dll

msvcr90.dll

你可能感兴趣的:(vc2008编译问题)