簡體   English   中英

Qt5 應用程序不運行

[英]Qt5 Application Does Not Run

我使用 Qt 5(使用 Visual Studio '12 編譯)創建了一個應用程序。 它適用於我的機器。

但是,當我嘗試在另一台機器上運行它時它不起作用。 我通過 cmd 收集的輸出產生了一個空文件。

目錄結構如下:

  • 我的應用程序
  • icudt52.dll
  • icuin52.dll
  • icuuc52.dll
  • 庫文件
  • libGLESv2.dll
  • msvcp120.dll
  • msvcr120.dll
  • Qt5Core.dll
  • Qt5Gui.dll
  • 平台/qminimal.dll
  • 平台/qwindows.dll

我發現的最相關的帖子是使用 QT5 庫部署的應用程序未在 Windows 7 上啟動- 但解決方案(包括 qwindows.dll 和 qminimal.dll)不起作用。

有任何想法嗎?

當您在 Qt Creator 外雙擊您的 exe 時,Windows 將報告一些啟動錯誤。 看起來您已經包含了大部分或全部這些內容。

由於您的 exe 搜索的LibraryPaths ,您的開發機器通常不會在啟動和運行其 qt 插件時遇到問題。 http://qt-project.org/doc/qt-5/qcoreapplication.html#libraryPaths

Dependency Walker將完成這項工作並向您展示您需要知道的內容,但輸出非常復雜且難以破譯。

我發現找出我在 Windows 上運行時使用的 Qt 插件 dll 的最簡單方法是執行以下操作:

  1. 退出 Qt Creator。

  2. 在資源管理器中打開與 Qt 一起使用的編譯器的安裝文件夾。 例如:

     C:/Qt/5.3/msvc2010_opengl/
  3. 創建副本plugins (代替文件夾Copy of plugins文件夾中的相同路徑plugins ,所以它的母公司是msvc2010_opengl在這種情況下)。

在此處輸入圖片說明

  1. 在另一個資源管理器窗口中,在您的開發機器上打開您的 exe(Qt 程序)。 對您的程序進行最少的測試,以確保主要功能正常工作。 (許多運行時插件在使用它們的 QObject 被實例化之前不會被加載)。

  2. 刪除Qt路徑下的plugins文件夾。

  3. Windows 將鎖定您的 exe 正在使用的所有 dll,並防止您刪除許多 dll。 單擊跳過所有不可刪除的文件夾和文件。

在此處輸入圖片說明

  1. 現在進入您以前無法刪除的每個文件夾,並嘗試刪除每個文件夾中的所有單獨的 dll。 單擊跳過所有不可刪除的 dll。

  2. 現在,當您完成所有操作后,您將獲得一個插件文件夾的框架,僅顯示您的應用程序正在使用的 dll。

  3. 它可能包括以下文件夾: accessibilityplatformsimageformats ,具體取決於您在.pro文件中包含的內容。

  4. 關閉你的exe。

  5. 將精簡后的插件文件夾的內容復制到您的 exe 旁邊。

  6. 恢復插件文件夾的備份(從 Qt 路徑中刪除精簡的插件文件夾並恢復Copy of plugins )。

  7. 現在你應該可以走了。 在非開發機器上測試。

關於 VS C++ 運行時的說明

同樣在某些機器上,當使用 MSVC 部署 Qt 時,msvcrXXX.dll 與系統其余部分使用的不匹配。 我們沒有在辦公室的安裝程序中部署 msvcrXXX.dll,而是包含 Microsoft C++ Redistributable Installer 並在安裝腳本中運行它。 在一些機器上,他們損壞了 Redistributables,我們不得不強制安裝 Redistributables 以修復我們有時會遇到的“來自服務器的推薦”錯誤。

您可以在最新支持的 Visual C++ 下載 中找到 MSVC Redistributables 的最新安裝程序。

希望有幫助。

您必須在手動復制 dll 文件之前部署您的應用程序。

要在 Windows 上部署 Qt 應用程序,您可以使用windeployqt ,它可以在以下位置找到:

<QTDIR>/bin/windeployqt

示例批處理腳本可用於部署 Qt 應用程序(使用 PowerShell 或 cmd 運行):

C:\Qt\Qt5.x.x\5.x.x\MSVCx_x\bin\windeployqt <APP_PATH>/myapp.exe
  1. 部署應用程序后,嘗試運行myapp.exe並注意缺少哪些 dll 文件。

  2. 將所需的 dll 文件從QTDIR/bin復制/粘貼到您的 <APP_PATH>

有關部署的更多信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM