【精选】VS2019报错:应用程序无法正常启动(0xc00007b) |
您所在的位置:网站首页 › 无法正常启动程序0xc000007b › 【精选】VS2019报错:应用程序无法正常启动(0xc00007b) |
记录一个很蛋疼很蛋疼的问题,搞了两天左右才解决,更蛋疼的是,目前也不是根本性解决。。。 1.问题从SVN拉下来的项目,原本是VS2017的项目,到我这边因为原本没有安装VS2017,所以从VS2019运行。。。 然而编译是通过了,但是运行报错如下,没有明确的错误信息。。 先是从网上去百度了一下,很多文章都说是dll的问题,于是就从dll的方向去排查(然而这是一个很大很大的坑,因为根本不知道哪个dll有问题导致的!!!) 接着,我用depends.exe(关于depends可以参考我的这篇文章:传送门)查看dll依赖情况,发现我的这边没有引用到cpp-redis,如图: 小插曲:因为vcpkg对库的版本控制做的不是很好,在把我的cpp-redis和同事的cpp-redis安装成同一个版本的时候,也花了好多的时间。(如何安装可以参看附录,感觉这种方式也不是很好,如果有更好的方式欢迎交流) 这时候其实没有什么思路了,期间也下载了VS2017还是不行。于是一边百度一边瞎搞了好久还是没有找到问题。。百度上面有说安装DirectX的,安装了也没有用。。还有很多都说是dll的问题,没办法,只能继续看下depends.exe这边的检测结果。 中间改了一些环境变量,然后重新检测的时候发现如下几个报红的dll(32位的dll所以报红,关于如何查看dll是32/64位,可以参考上面的传送门),于是又着手解决了几个报红的dll,然而问题还是没有解决,于是又深入进去了几层解决了一些报红dll,问题还是没有解决。。 SYSTEM、SYSTEM32和SysWOW64有什么区别?在32位操作系统的Windows文件夹中,SYSTEM和SYSTEM32两个文件夹,分别用来存放16位和32位的DLL文件。 在64位操作系统的Windows文件夹中,System32和SysWOW64两个文件夹,分别用来存放64位和32位的DLL文件。 WOW64的全称是32bit Windows On 64bit Windows,即运行在64位系统上的32位程序。简单说,就是历史原因。 参考:https://www.huaweicloud.com/articles/fb98246b7a71b2a7ad1ed82fd1339f7e.html ![]() ![]() 最后,问题虽然是暂时解决了,但内心还是诚惶诚恐,因为完全不知道 为什么我的system32目录下面会有32位的dll??而且更重要的是depends.exe也不能检测出我用了msvcr110.dll。。 所以,万一下次再遇到类似的问题,似乎还是不能快速的解决?? 没有找到比depends.exe 更好用的检测dll依赖的软件,有知道的大佬还烦请告知一下。。 附录:如何安装指定vcpkg的安装版本vcpkg安装包的时候本质上是从git上面去下载然后编译安装 而每个库要从哪里去下载这些配置都在vcpkg安装目录下的ports的目录里面 所以,比如我想要安装一个和别人一样版本的cpp-redis库,只要把别人的ports/cpp-redis目录拷贝并覆盖下然后在安装就可以 当然,你也可以直接修改配置文件,这里面的配置文件说白了还是git库相关的那些配置。。有兴趣可以研究分享一下~ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |