参考:
https://blog.csdn.net/u010205478/article/details/88682932
https://www.cnblogs.com/hbccdf/p/dllchecktoolandsyswow64.html
https://blog.csdn.net/norsd/article/details/81288681
现状: 一个VS项目,build完成了,运行时却报0xc000007b错误,无法运行!
查看依赖项
- 使用开始菜单,输入"VS2015 本地工具命令提示符",运行之.
- 输入
dumpbin /dependents [文件路径]
,比如要查看c盘根目录下的a.exe就输入dumpbin /dependents "C:\a.exe"
- 发现有几个依赖项;
检查依赖项是否可以访问到
- 使用Everything检查这几个依赖项是否存在系统路径"C:\Windows\System32" and "C:\Windows\SysWOW64"里,以及exe同一目录里等;
根据大佬分析,System32目录存放的是64位的dll, SysWOW64目录存放的是32位的dll. 32位应用程序(exe)等访问System32目录下的任何文件时,会被自动映射到SysWOW64目录. 64位应用程序(exe)可以直接访问两个目录.
检查依赖项的版本是32位还是64位
- 如果所有依赖的dll都在能访问到的路径,那么可能是dll的版本与应用程序(32位)不匹配.使用denpends.exe软件(Dependency Walker)可以查看到依赖项DLL的版本,
使用文本编辑器查看你已有dll的版本也可以: 第2行的PE后面跟的是d,表示64位DLL,如果跟的是L,表明是32位的DLL文件
- 把该DLL替换成32位版本即可.