這是一個困擾我很久的問題,關於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的提示一個個都加上,“蒼蠅”錯誤被一網打盡。然后,出來了一個“老虎”級別的錯誤!見截圖。和老虎斗爭一個下午,元氣大傷,敗下陣來。
今天晚上開始第二階段斗爭,Google、stackoverflow上面的帖子,Qt自己的文檔反復看了幾遍,發現兩個方法。第一,因為錯誤提示是和platform有關,有人建議把plugins/platform這個文件夾原封不動地復制到安裝包里,不改變文件結構,就像下圖這樣。照做,問題依舊存在。又有人說提示缺少’windows’ platform,把platform文件夾里多余的dll文件都刪去,但還是不行。
另一個人提到,安裝包里還要包含libEGL.dll和libEGLd.dll文件,原因是他們要和libGLESv2.dll在一起。。。libGLESv2.dll缺少是提示報錯的,但沒有提示需要libEGL.dll和libEGLd.dll。然后,就把他們兩個放進去了(好像只要放一個就夠了,具體哪一個我已經分不清了),窗口輕松彈出,運行正常。
折騰了兩個晚上,問題總算還是得到解決。