应用程序正常初始化失败!//找不到 msvcrtd.dll

2010年01月12日 11:21

      晕死,写了半天,网络故障~又得重写,做个笔记也不容易啊~  

    记录一下几天的折腾,顺便做个小总结。   

      想要把vs2008编译出的debug版的可执行文件拿到没有安装vs2008的电脑上运行。为什么不用releas版的,省的折腾?因为release版本的,编译正常运行出错,原因应该是动态链接的库,应该都是release版的才行。好接下来就开始折腾了,我以为直接拷贝了可执行文件所在文件夹得所有东西,带上我动态链接的dll,装上vs2008 redistribution就搞定了,哪有这么复杂。

      第一个错误出现了:“缺少msvcp60d.dll和msvcrtd.dll”,拷过来以后依然错误:“由于配置环境。。。”觉得应该跟6.0没有关系了,肯定是vs2008的问题。查了一些资料,在电脑上搜索9.0的几个dll,msvcm90d.dll、msvcp90d.dll、msvcr90d.dll拷过去,报错:“应用程序正常初始化失败。。。”;因为之前写程序的时候在自己机器上也有遇到过这个问题,当时是因为缺少dll所以提示这个错误。后来又继续查资料找原因,又拷贝了D:/Program Files/Microsoft Visual Studio 9.0/VC/redist/Debug_NonRedist/x86/Microsoft.VC90.DebugCRT下的manifest文件和同上面的三个dll同名的dll,依然报错:“。。。build manifest。。。”,这次错误不一样了,哇塞,兴奋,终于可以知道具体一点的错误了,一看是manifest引起的,网上一搜,我的个乖乖,原来这些90的dll还有什么小版本这一说~,那我怎么去找这些同版本的manifest和同版本的dll呢。。。   

      看到有好多解决方案,下面的这是我试的第一个:既然你不提示,我就找工具来解析,看你依赖了什么些东西。殊不知6.0就有这工具:dependency·,我还去网上搜罗~才想起来csdn上有人讲过这玩意,当时不知道它是干嘛的。他说的是dependencies~解析可执行文件后,发现确实没有多引用什么dll啊又根据查来的一些资料,我拷贝了windows下的winsxs文件夹到那台机器上并覆盖它的这个文件夹。(当时已经重新编译了一个debug版了,我把清单工具的嵌入清单改为了否),双击运行,ok成功了。但是后来再整理的时候。。。竟然没办法理清楚我到底是干了什么它就好了。。。   后来再回去研究那个清单文件,也就是这个manifest,我在dependency里面看到了它解析出来依赖的那些dll的版本号,以及它的路径觉得好开心。找到拷过去就好。

      但是这样不是根本解决问题的方法。。。就在这时候,有一个帖子的最下方,一个人的留言:2009年11月13日 星期五 09:14 A.M. 为什么这么折腾呢?这样看来,微软发明manifest是错误的,因为大家都为运行库烦恼,真的还不如VC6,这可能吗?其实很简单,打开你的vs,创建一个Setup and Development下的Setup Project项目,然后添加Merge Module,选择你需要的运行库,最后就是Build,生成的文件与你的程序一起发布就行了  后来,我就这么干地,顺便把我自己用的dll,6.0的dll也顺便打到包里了。现在只要安装了,在哪都能运行。感谢感谢~那个Xcyber,一语惊醒梦中人~早怎么不看看那个右键属性呢~哎~还是要反省啊。绕圈圈,生活有时候就是这样,直接看吸收不了,反而要自己绕好大好大一圈才会说:哦~右键属性嘛~O(∩_∩)O哈哈哈~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值