2013-08-29 78 views
2

要測試部署過程,我試圖部署包含的演示應用程序Minehunt。我能夠讓它運行,沒有崩潰或錯誤,但屏幕全白。獲取關於部署Qt Quick演示應用程序的全白屏幕Minehunt

我相信這通常意味着我缺少插件。依賴walker報告沒有問題,我甚至試過包括Qt MingW插件目錄中的所有插件,但沒有這樣的運氣。

這是我到目前爲止,任何人都可以建議我還需要添加什麼來讓它運行?

enter image description here

enter image description here

回答

1

您的dll不看壞。我也想,這是你的插件。即使他們在那裏,你的程序也很難找到它們。 Qt有點挑剔在哪裏看默認。你可以試試qt.conf。這是一個小文本文件,您必須在可執行文件所在的文件夾中創建。它包含了你的Qt插件的路徑。

舉例來說,在我的項目之一,我有跟隨着文件夾佈局:

 
Appfolder 
    plugin 
    qt 
     plugins 
     imageformats 
     sqldrivers 
    myapp.exe 
    qt.conf 
    ...many dlls... 

然後我添加了一個qt.conf文件到Appfolder,它具有以下內容:

 
[Paths] 
Plugins = plugins/qt/plugins 

我的程序是Qt 4,但我不認爲插件部署的這方面在Qt5中發生了變化。 我所有的qt dll都在qt中。我添加以下路徑:SET PATH=.\plugins;.\plugins\qt;%PATH%。在我嘗試過的任何Windows上工作就像一個魅力。

編輯: 然後我創建了一個.bat文件,其中的作用:

 
SET PATH=.\plugins;.\plugins\qt;%PATH% 
cd Appfolder 
start myapp 

這是一個醜陋的速戰速決,這是我沒有足夠的時間和更好的東西來代替,但。

+0

你在哪裏放置語句SET PATH =。\ plugins;。\ plugins \ qt;%PATH% – johnbakers

+0

已添加到答案中。用批處理文件做它是醜陋的。但你需要的是讓它先運行。化妝品可以晚點來。 :-) – Greenflow

+0

我無法完全知道這些信息,但是您的exe文件是否在Appfolder/myapp.exe中?另外還有Appfolder/qt.conf和Appfolder/plugin,所以你在根目錄下只有這三件事情? – johnbakers

1

如果應用程序運行,並顯示黑屏那麼這通常表明了兩兩件事:

  1. 所有的依賴關係(動態鏈接庫)是可能存在並檢測正常。
  2. 最有可能缺少的是qml文件在正確位置的存在。

在你的main.cpp中檢查qml文件的路徑,你將會看到這個文件夾是否存在於與你的可執行文件相對應的相同位置。

此外,不是通過雙擊運行可執行文件,而是通過命令行運行它。如果根據指定的路徑無法找到某些圖像/文件/其他依賴關係等,它可能會打印一些消息。


編輯1:

在添加此標誌。pro文件:

CONFIG += console 

一旦您運行應用程序,它將在控制檯中提供確切的調試消息。

+0

**最可能缺少的是qml文件在正確位置的存在。**確實。所以它也可能是qmldir錯誤或缺失。 http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-qmldir.html – Greenflow

+0

它顯示在main.cpp中:'viewer.setMainQmlFile(QLatin1String(「qml/minehunt/minehunt.qml」 ));'我的qml/dir與exe文件位於同一級別,它包含main.cpp中指定的路徑。這是minehunt演示應用程序。 – johnbakers

+0

在這種情況下檢查項目中是否存在任何「資源文件」。 –