昨天做项目的时候,在安装一个win32的应用程序后再次启动vs2010时发现报错,就是如下的错误:
哎呀,我的天,关键时刻就打不开了。这么怎么办呢。赶紧去搜解决办法。
1.使用Directx修复。(修复了180个左右的dll文件,但是没有解决我的问题。。)
2.卸载,重新安装vs2010。(依然不起作用。因为根本原因不在程序这里。)
3.我继续查找方法。最后确定了问题的所在。我的vs2010缺少了正确版本的dll文件msvcp100.dll,msvcr100.dll。
在我的电脑下C:\Windows\SysWOW64\msvcp100.dll,msvcr100.dll这两个文件竟然是当前的日期。赶紧看了下版本。竟然是64位的dll。我想起来。为了做32位系统的项目。我替换了几个dll版本。(有的同学会疑惑,C:\Windows\SysWOW64文件夹下怎么会是32位系统文件版本呢。)
因为在64位系统上,System32里面的文件都是64位的,而SysWOW64里面的却是32位。
而在32位系统上,都没有SysWOW64这个文件夹。只有System32这个文件夹,这个时候,那里才是32位的系统。
使用工具赶紧查看下dll的版本,C:\Windows\SysWOW64\msvcp100.dll。这个竟然是64位的。赶紧把出错的dll替换为32位的。问题得到解决。
(不知道怎么查看dll版本的。可以参照一下方法打开。)
打开支输入,dumpbin.exe /headers C:\Windows\SysWOW64\msvcp100.dll
命令 查看的dll
查看结果:
再看一个64位的文件。去C:\Windows\System32\下随便查找一下。
总结一下:应用程序无法正常启动(0xc000007b).请单击“确定”关闭应用程序.
我的这个问题是vs2010没有找到正确版本的dll文件导致。同时在查找问的时候也学习到了C:\Windows\System32\存放的是64位dll文件的地方。
C:\Windows\SysWOW64\存放的是32位dll文件地方。