最近经常遇到这个问题,用QT的命令窗口编译的程序,在别人电脑上有些能正常运行有些就会出现0xc000007bde的错误,或者提示缺少xxxxx.dll文件缺失的错误,然后你将将这个动态库文件复制过去你就会发现最后还是会出现0xc000007b的错误,其实提示缺少.dll文件时并不是缺少文件,大概也就是因为程序找不到改文件。下面讲一下解决方案,百度上有很多方式,但是试了好多都不行,在这里记录一下:
第一步:
先找到vs的命令窗口,我们使用兼容工具命令提示,64位的就使用x64版本,32位使用x86版本
第二步:
假设项目名称是MainWindow,将写好的程序以 Release 方式编译生成 exe 程序;
第三步:
生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:
C:\MainWindow\ 它的项目生成目录是 C:\MainWindow\x64\Release\
进入这个文件夹,在进入它的子文件夹 release 里面,找到 MainWindow.exe ,
将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到 D:\MainWindow\ 文件夹里面。
第四步:
从你打开的命令提示工具,输入命令 :cd D:\MainWindow文件夹中
然后使用 windeployqt 工具命令:windeployqt MainWindow.exe
在 D:\MainWindow文件夹里看到 windeployqt 工具自动复制的插件文件夹
和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。
出现这种情况可能还存在另外一种情况就是你的库文件搬运错了,32位和64位的库文件名称一样,但是如果你搬运的文件出错了也会出现这种情况,只需要从编译器的bin目录下copy需要的dll动态库,将所有的文件替换成64位的就行了