这是一个困扰我很久的问题,关于Qt下生成的exe文件在没有安装Qt的机器上无法运行的问题。
Qt是编写C++图形界面的一个很好工具,比MFC来的直观。可是,Qt的安装却是一个让人头疼的事情。早在上个学期,我就在windows XP 系统下安装了Qt 4.8,用破解版的msvc 2010编译。安装过程中出现了多次“configure is not an internal or external command”之类的问题,安装卸载了多次,好在最后可以使用。之后又安装了破解版的ipp包,当我把生成的exe文件移到另一台电脑上安装使用时,总是提示缺少dll,或者XXX错误。鉴于都是破解版的软件,我不知道究竟是路径添加的问题,还是dll文件的问题,还是破解版的缘故。最后还是不了了之。
上个星期天,突然又想到了Qt,重新下载安装Qt5.1.1,操作系统是Windows 7 64bit 加上msvc2012。我用了一个example做实验,用inno setup打包生成安装文件包,U盘拷到另一台电脑,安装,运行,又是错误!!!
先提示缺少各种XXX.dll文件,按照dependency walker的提示一个个都加上,“苍蝇”错误被一网打尽。然后,出来了一个“老虎”级别的错误!见截图。和老虎斗争一个下午,元气大伤,败下阵来。
This application failed to start because it could not find or load the Qt platform plugin
今天晚上开始第二阶段斗争,Google、stackoverflow上面的帖子,Qt自己的文档反复看了几遍,发现两个方法。第一,因为错误提示是和platform有关,有人建议把plugins/platform这个文件夹原封不动地复制到安装包里,不改变文件结构,就像下图这样。照做,问题依旧存在。又有人说提示缺少’windows’ platform,把platform文件夹里多余的dll文件都删去,但还是不行。
Capture
另一个人提到,安装包里还要包含libEGL.dll和libEGLd.dll文件,原因是他们要和libGLESv2.dll在一起。。。libGLESv2.dll缺少是提示报错的,但没有提示需要libEGL.dll和libEGLd.dll。然后,就把他们两个放进去了(好像只要放一个就够了,具体哪一个我已经分不清了),窗口轻松弹出,运行正常。
折腾了两个晚上,问题总算还是得到解决。