VC8.0编译的程序出现The application failed to initialize properly (0xc0000005)

最近开发了一个系统,在简体中文和繁体中文下都可以正常运行,但是到了英文版本下一打开会出现The application failed to initialize

 

properly (0xc0000005)这个错误,可能是因为英文版本的系统太低了,还没有更新所导致的,因为我尝试把源码用VC6.0编译的不会出

 

现这个错误,但是用VC8.0编译以后拿过去测试还是会错,于是我开始寻找解决方法,终于解决了。下面是我解决的方法。

 

在VC6中,Release版本的程序的部署,除了程序自身关联的各个Dll之外,只需添加MFC42.dll即可。

 

但是在VC8.0中,发生的变化包括:

 

1.MFC的版本发生变化,最新的版本为8.0,所有应该包括MFC80.dll

 

2.在VC2005的架构下,采用manifest进行dll的版本确认,因此需要添加MFC程序所需的manifest文件。

 

在VC2005的安装目录下:C:/Program Files/Microsoft Visual Studio 8/VC/下有一个文件夹为redist专用于

 

程序的部署和发布。在其中的x86文件夹用于Release版本的程序发布,其中的Microsoft.VC80.MFC文件夹用于发布MFC程序,包括混合

 

有Unicode以及CLR的程序,可以根据程序需要选择copy。对于我个人的单纯MFC的程序,只需要复制Microsoft.VC80.MFC.manifest

 

和mfc80.dll即可。其余几个,文件名称中带有“u”的表示兼容unicode编码,带有“m”表示使用托管代码生成规则。

 

还有另一个解决的办法:manifest文件(这个是我的应用的解决方法)

 

     在VC2005的开发环境下,选择项目属性-->清单工具-->输入和输出,在潜入清单位置,选择“否”,这样VC2005将会直接在

 

Release目录下,exe文件的旁边为您生成一个同名的manifest文件,文件内容和Microsoft.VC80.MFC.manifest有关联。直接复制这个

 

文件也可以起到效果。对不太熟练的开发人员,可以直接将这些dll统统复制到自己的exe文件所在目录下,应该可以确保万无一失,只不过

 

有的文件没有被利用而已。最简单的程序发布方法莫过于直接复制文件,对依赖的dll文件,可以直接和exe文件放在同一个文件夹下,而不

 

将其复制到系统文件夹下。  

隔天测试机上又可以用原来的程序了,我发现测试机上的更新是自动开启的,我觉得是自动更新了,所以还是要把这个方法记录下来,分享

 

给大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章