由于应用程序配置不正确,应用程序未能启动

时间:2022-11-24 16:47:20
怪我自己没说清楚,原帖地址
http://topic.csdn.net/u/20110929/15/926779eb-1b0f-4d5e-b89c-245c7b396c1e.html?45417
工程本身比较大,mfc动态连接,运行时是MDd,由于底层库我没有,因此也不方便改这些配置,于是我直接拷贝的debug版本的(没有对应的release库,并且需要设置n多,几十个设置,所以我就想着debug版本的能跑起来就好了)。
现在在本身安装了vs环境的电脑上没问题。  在没有安装的上面会报  由于应用程序配置不正确,应用程序未能启动 的错误。
依照很多网上的方法做了,例如加上以下4个等
msvcm90d.dll
msvcp90d.dll
msvcr90d.dll
Microsoft.VC90.DebugCRT.manifest 
都没有效果。
然后depends查看,发现若对于没有资源的dll(并且依赖dll也没有资源的)能正常加载,对于有资源的则会报错,恳求大侠指点,两贴的分数一并归您了。

11 个解决方案

#1


首先,您要尽量编译成release版本
其次,可以在没安装vs的机器上安装 重分发组件
再次,您要检查manifest里面的设置
最后,俺记得把所有的dll拷贝到exe所在目录有效。

#2


引用 1 楼 jennyvenus 的回复:
首先,您要尽量编译成release版本
其次,可以在没安装vs的机器上安装 重分发组件
再次,您要检查manifest里面的设置
最后,俺记得把所有的dll拷贝到exe所在目录有效。

谢谢大侠,首先,由于条件限制没有办法release,
重分发组建我不太懂,可以讲一下么?
manifest我确定我经手的部分没有设置(它的上一个版本没这问题。。)
最后大侠,我在depends下查看了下,发现缺失的是ieshim.dll war.dll等,这些应该无关的

#3


对于vs 2008来说

mfc程序安装微软重分发包。

http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn

Microsoft Visual C++ 2008 Redistributable Package (x86)

http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn

#4


引用 3 楼 jennyvenus 的回复:
对于vs 2008来说

mfc程序安装微软重分发包。

http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn

Microsoft Visual C++ 2008 Redistributable Pack……

您是指2008x86那个么,我已经安装过了,但是没有效果。。。郁闷死了
真是谢谢您了,大晚上的。

#5


在链接选项里把嵌入manifest关了试试看

#7


Microsoft.VC90.CRT.manifest

#8


右键看看MFC的DLL的版本正确与否。。
另外你的库可能不正确。
Debug版本需要
msvcr80d.dll
msvcp80d.dll
mfc80ud.dll
Microsoft.VC80.DebugMFC.manifest
Microsoft.VC80.DebugCRT.manifest

就这么多了。。

#9


你得看是不是运行库的问题,网上下一个你编译环境的运行库,然后再运行下,还不行可能就不是运行库的问题,是你自身程序可能需要某些特定的DLL。
如果可以运行就自己对照manifest 看看哪些库要加入的

#10


此问题已由xuddk727大侠提供解决方法解决,感谢大家。
说下解决方法,
1.(xp)拷贝VC\redist\Debug_NonRedist\x86下所有dll到目录下,并将你的winsxs替换掉对方的winsxs,然后重启。
2.制作安装包亦可解决。

#11


引用 1 楼 jennyvenus 的回复:
首先,您要尽量编译成release版本
其次,可以在没安装vs的机器上安装 重分发组件
再次,您要检查manifest里面的设置
最后,俺记得把所有的dll拷贝到exe所在目录有效。


MFC依赖库的问题 需要安装vc分发包

#1


首先,您要尽量编译成release版本
其次,可以在没安装vs的机器上安装 重分发组件
再次,您要检查manifest里面的设置
最后,俺记得把所有的dll拷贝到exe所在目录有效。

#2


引用 1 楼 jennyvenus 的回复:
首先,您要尽量编译成release版本
其次,可以在没安装vs的机器上安装 重分发组件
再次,您要检查manifest里面的设置
最后,俺记得把所有的dll拷贝到exe所在目录有效。

谢谢大侠,首先,由于条件限制没有办法release,
重分发组建我不太懂,可以讲一下么?
manifest我确定我经手的部分没有设置(它的上一个版本没这问题。。)
最后大侠,我在depends下查看了下,发现缺失的是ieshim.dll war.dll等,这些应该无关的

#3


对于vs 2008来说

mfc程序安装微软重分发包。

http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn

Microsoft Visual C++ 2008 Redistributable Package (x86)

http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn

#4


引用 3 楼 jennyvenus 的回复:
对于vs 2008来说

mfc程序安装微软重分发包。

http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn

Microsoft Visual C++ 2008 Redistributable Pack……

您是指2008x86那个么,我已经安装过了,但是没有效果。。。郁闷死了
真是谢谢您了,大晚上的。

#5


在链接选项里把嵌入manifest关了试试看

#6


#7


Microsoft.VC90.CRT.manifest

#8


右键看看MFC的DLL的版本正确与否。。
另外你的库可能不正确。
Debug版本需要
msvcr80d.dll
msvcp80d.dll
mfc80ud.dll
Microsoft.VC80.DebugMFC.manifest
Microsoft.VC80.DebugCRT.manifest

就这么多了。。

#9


你得看是不是运行库的问题,网上下一个你编译环境的运行库,然后再运行下,还不行可能就不是运行库的问题,是你自身程序可能需要某些特定的DLL。
如果可以运行就自己对照manifest 看看哪些库要加入的

#10


此问题已由xuddk727大侠提供解决方法解决,感谢大家。
说下解决方法,
1.(xp)拷贝VC\redist\Debug_NonRedist\x86下所有dll到目录下,并将你的winsxs替换掉对方的winsxs,然后重启。
2.制作安装包亦可解决。

#11


引用 1 楼 jennyvenus 的回复:
首先,您要尽量编译成release版本
其次,可以在没安装vs的机器上安装 重分发组件
再次,您要检查manifest里面的设置
最后,俺记得把所有的dll拷贝到exe所在目录有效。


MFC依赖库的问题 需要安装vc分发包