这二天的一个软件发布后,在自己的电脑与测试电脑上和虚拟机上运行都没有问题,当弄了一台新电脑,准备安装好软件,给客户用时,出现"应用程序无法启动,应用程序的并行配置不正确".
这回有点傻了,这个错误都没见过,在说,我程序编译时用的是静态库编译,如果没有库,也会报缺少**.DLL库啊,报个这个错,有点看不懂的感觉,其它的运行时库用的是多线程DLL(/MD)而不是多线程(/MT),因为用的是VC与C#混合编程,需要用到公共语言运行库(/CLR),没办法,找万能的狗哥,网页上大家都说是因为系统没有安装VC运行库导致的(看来这系统很纯净- -!),只要下载个vcredist就行了,找到微软下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=3387
这个运行库有对应的开发版本,如:2005、2008、2010啥的,还有X86和X64之分,我就下了个05和X86的,安装完后,重启,运行,还是不行,我去,郁闷了。由于没有时间试,下午又要给客户测试,软件不能运行就倒霉了,我想我的电脑可以运行,算了,给它安装个VS2005,看能不能运行,安装完成后,一运行,果然,木有问题,软件可以运行了,现在可以肯定导致这个问题的原因就是由于缺少库形成的,以后去安装肯定不能给客户的电脑搞个2005,别说客户会说,就连自己都不忍心,哎,抱于这种态度,继续去查找,找了一大片都是说下个vcredist后,终于看到个网友总结的,在VC目录下的redist目录里,有对应需要的DLL库,然后我就看到了mfc80.dll,这个库是MFC程序的核心,我把它扔我的release的目录下,一运行,还是错误,但错误改变了,说少了MFC80D.DLL库,我果断复制过来,一运行,OK,二个库就可以搞定程序无法启动的问题了。但是如果是DEBUG版的,就找对应的目录。
由于上面的网友只是随便说了下目录,这些文件都是自己试出来的,所以自己总结下:
如果是自己的MFC程序出现这个情况,release版的只要复制/2005主目录/VC/redist/x86/下面对应的目录里的开发类型(我这是MFC程序,所以是Microsoft.VC80.MFC)/下面的mfc80.dll和mfc80d.dll二个文件复制过来就行。
而DEBUG版的复制/2005主目录/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugMFC下的二个库文件,debug版的还要复制manifest文件,所以是三个,而也用到了C#代码,所以Microsoft.VC80.DebugCRT目录下的也要复制过来,加上manifest文件,当然大伙如果一般不会混合编程,按道理只要DEBUG_mfc下的库就行了,我情况特殊(- -!,而且也不好弄),囧。
好了,最后总结(别嫌啰嗦,码字也不容易- -!),四个方法可以解决这问题:
1、下载网上的VC运行库vcredist(反正我是没成功,不知道是不是环境原因,不管了).
2、MFC的使用改成:在静态库中使用MFC,代码生成里:运行时库改成-多线程(/MT),由于我打开了公共语言运行库(/clr)选项,所以只能用多线程DLL(/MD),这是共享编译,所以我后面需要运行库.
3、复制对应编译器下的redist目录下的库文件,上面已写。
OK,这样之后,你的程序就可以随便发布咯,不会出现少库的情况了。
本文出自 “西边太阳” 博客,请务必保留此出处http://thgenius.blog.51cto.com/1042803/1408920
关于并行配置不正确,应用程序无法启动的问题,布布扣,bubuko.com
原文:http://thgenius.blog.51cto.com/1042803/1408920