本人在Win7 64位系统,VS2013使用MFC编译的程序,程序使用32位编译。
生成的exe拷贝在纯净的操作系统WinXP/Win7,运行出错:应用程序无法正常启动0xc000007b
原因及对策:
dll文件32位和64位混淆了。其根本原因是缺乏所需要的DLL,提供了错误版本的dll相当于没有dll。
win7 64位操作系统里,C:\Windows\System32文件夹里的dll为64位的,32位的dll在C:\Windows\SysWOW64里。32位的程序误用64位的dll自然会出错,改从SysWOW64里拷相应的dll里即可。出人意料!System32和SysWOW64,容易被名字所迷惑!
另外,
32位MFC的.dll文件也可以在C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86找到。
64位MFC的.dll文件也可以在C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64找到。
想要最新版本的redist,请访问:
The latest supported Visual C++ downloads
The latest supported Visual C++ downloads
------附录------
一、工具:depends,可以查看exe文件的依赖库,仅适用于winxp/win7/win8,不能用于win10.
官网下载:Dependency Walker (depends.exe) Home Page 分32位和64位两种
https://github.com/multilang-depends/depends
使用方法:
1、点击工具栏上的文件→打开,找到需要分析的exe可执行文件即可,这里就点击Depends.exe可执行文件进行分析(可执行文件格式,包括 DLL、EXE、FON)。
2、点击一个dll动态链接库,右边就会出现两个窗口。第一个窗口是所选的Dll模块所使用的函数,分为:序数、提示、函数、入口点等讯息。
3、下面窗口是所有需要的Dll模块的属性。出错的数据会有红色、黄色(有些是环境不同造成的)的警示问号。
二、(推荐)工具:Dependencies,可以应用在win7/win8/win10,不支持winxp,但还是推荐使用!
软件下载:
https://github.com/lucasg/Dependencies
https://github.com/lucasg/Dependencies/releases
软件依赖环境:
需要下载Microsoft Visual C++ Redistributable,The latest supported Visual C++ downloads:
The latest supported Visual C++ downloads
最后,运行程序:
DependenciesGui.exe
三、DLL文件下载网站:Download missing DLL files for free | DLL‑files.com