問題:在使用Qt5.3.2編寫程序并release,文件夾中已添加了必要的dll,但在其他機子上運行程序失敗,出現(xiàn)了下面的情況:
解決方法1:在C:QtQt5.3.25.3中進入mingw482_32文件夾,將pluginsplatforms全部目錄復制exe履行文件所在的文件夾目錄中,程序便可運行。
以下是網上幾個其他方法的總結:
解決方法2:復制你exe需要的qt插件,首先要在源程序中的main函數中加上QApplication::addLibraryPath(“./plugins”);
把C:QtQt5.3.25.3mingw482_32plugins里的dll復制到exe履行文件目錄就OK了。
比如程序在自己機子上運行正常,拷貝到其他電腦后1些圖片沒法顯示可嘗試這類方法。這時候可能的解決方案是,進入exe文件所在目錄底下新建文件夾imageformats, 然后去QT的plugins下imageformats文件夾下拷貝相應的圖片編碼的dll和lib。例如在程序中用到的圖片是jpg格式的,就復制qjpeg.dll 和qjpeg.lib過去。
解決方法3:使用Process Explorer查看程序所使用的dll
Process Explorer是1個很有用的工具。由Sysinternals開發(fā)的Windows系統(tǒng)和利用程序監(jiān)視工具,目前已并入微軟旗下。不但結合了Filemon(文件監(jiān)視器)和Regmon(注冊表監(jiān)視器)兩個工具的功能,還增加了多項重要的增強功能。包括穩(wěn)定性和性能改進、強大的過濾選項、修正的進程樹對話框(增加了進程存活時間圖表)、可根據點擊位置變換的右擊菜單過濾條目、集成帶源代碼存儲的堆棧跟蹤對話框、更快的堆棧跟蹤、可在 64位 Windows 上加載 32位 日志文件的能力、監(jiān)視映像(dll和內核模式驅動程序)加載、系統(tǒng)引導時記錄所有操作等。(來自百度百科的解釋)
既然可以監(jiān)視dll,那末在發(fā)布程序前,可以用Qt Creator運即將要發(fā)布的程序,在Process Explorer中查看exe使用的dll,1般來講,程序運行失敗極可能就是少了對應的dll文件。
這是我用qt發(fā)布1個簡單程序所需要的dll列表: