我现在碰到了一个问题,就是vs编译工程没有问题,也能产生正常的exe文件。但是一运行(不调试),就报错:
阿西吧!!!!!!!!!!!!!!!!!!!!!!
又是调x64平台又是x86平台已经折磨死人了。为什么还有这些令人口区的问题啊啊啊啊!!!!!!!
不过很神奇的是,我直接进入项目的Debug文件夹下,点击exe文件,是能出来东西的。不过不是按照我所编程的目的出结果就是了。
好了那么我们怎么解决这个问题呢?
参考博客:https://blog.csdn.net/electech6/article/details/78719788
参考了上面的链接,我认识了dependancy walker。这个软件好神奇的诶。在官网上下载就行了。如何用这个软件呢?
参考博客:https://blog.csdn.net/swort_177/article/details/5426848
今天我就要用这个软件分析我生产的exe文件,来找出不能正常启动的原因:
如果你在用这个软件打开东西的时候,发现一直没有相应不要着急啊。它就是分析的很慢,毕竟要展开那么多东西。耐心等一会儿就行了。
可以看到我的exe文件在用到OPENCV_WORLD300D.DLL的时候是红色的,说明问题在这个文件上。然后我再展开,我发现:
最容易的猜测就是可能是因为环境变量调用的dll和当前目录的不一致引起的。我就把我SYS64目录下的这两个dlll文件复制到exe同一目录下了。但是然并卵,并没有什么用。
参考该博客:https://blog.csdn.net/xianhua7877/article/details/80815253
怎么说x64的电脑,Sys32才是放的64位的dll文件,而syswow64下面放的是32位的dll文件呢?难道真的是这样??
我试着把我系统下的sys32和sys64下这两个文件对调了一下,但是并没有用。还是出错。
于是我参考该博客:https://blog.csdn.net/dyt443733328/article/details/81911263
试图通过黑窗口进行扫描,你看,还没扫描完。那我睡一觉去吧。。。:
睡一觉第二天醒来,依然是报错。。。excuse me?????????????都别拦我,我要把电脑摔了、
继续反思。。。。。。。。。。。。。
既然是这个问题,那肯定动态链接库出问题了。从软件的分析截图也可以看出,是MSVCP120d.dll和MSVCR120d.dll出了问题······
经过长达10多个小时的折磨,我已经忘记了我都做过了什么。。。总之,在vs2015上能够运行了。
我是x64平台,我的所有变量配置也都是64的。我之前的dll文件64和32并没有放颠倒。我只记一下我所有的配置吧。如果以后还遇到这种问题,就参照这个配置:
系统环境变量:
-------------------------------------------END----------------------------------------------------
二更:
系统环境变量改为如下,这是PATH的:
三更:
这是调试的时候加载的主要dll文件,可以看到,重要的dll文件都没有成功加载,虽然路径下确实有这个文件: