2013-01-17 100 views
4

我在Windows 7 64位上使用Qt Creator構建了一個Qt 5應用程序(使用msvc 2010)。 該應用程序在我的電腦上完美運行,但不會在其他電腦上運行。爲什麼我的QT應用程序無法正常工作?

我將Dependency Walker中顯示爲丟失的所有.dll文件複製到程序文件夾中,並且沒有錯誤,但應用程序不會運行。

我已經在Windows XP和Windows 7 64和32位上測試過它。
我能做什麼才能找出問題所在?

更新:我安裝了Qt 4.8.4(vs 2008)和msvc 2008 express,我編譯它,它在其他計算機上運行,​​使用Qt4的.dll。 也許有人知道Qt5的問題...

+0

嘗試從命令提示符運行可執行文件,以便您可以讀取錯誤消息並將其添加到您的問題。 [這可能有所幫助](http://www.wikihow.com/Run-a-Program-on-Command-Prompt) –

+0

@AntiEarth,給我空行。沒有錯誤信息... –

+0

如果您的應用程序處於調試模式,則不應該在其他計算機上工作。即使有需要的dll。如果是這樣 - 發佈版本 – borisbn

回答

4

我有同樣的問題。

您需要在您的可執行文件目錄中包含包含qwindows.dll和qminimal.dll的「platform」目錄。您可以在「plugins」文件夾下找到該目錄。

如果您不添加此項,您的應用程序將顯示加載,然後退出並返回代碼0.依賴項walker不能幫助您,因爲DLL是延遲加載的。

0

我也遇到過同樣的問題,並瞭解到MinGW GCC 4.7與Qt 5.0及以上版本不兼容,從這this post。我採取了和你一樣的方法,並切換到Qt Creator 4.8工作。

3

我有同樣的問題 - 我添加了由Dependency Walker報告的所有DLL,但是我的程序在運行時立即退出,沒有錯誤消息。

我加了libEGL.dll到程序目錄,現在運行正常。

我猜libEGL.dll是由其他DLL動態加載的 - 可能是libGLESv2.dll,根據所有已知的依賴關係,它具有最相似的名稱(!) - 並且動態加載不是那種依賴Walker可以檢測。

+0

爲我工作!非常感謝!!!我有同樣的問題。對我來說,包括'平臺'文件夾和添加mingwm10.dll是沒有必要的。我只是添加了所有錯誤消息,當我點擊我的.exe文件不斷給我,然後最後一步是添加libEGL.dll,然後它只是工作! – hexicle

0

我也有同樣的問題,並嘗試用這兩個DLL丟失消息&依賴沃克,它並沒有幫助我,或我不知道我是否正確使用它。下面的方法幫我解決了(對於給定的場景)吧。這種方法適用於一些最小的情況。

方案

  1. Qt Creator的3.3.2
  2. QT 5.4.1(MSVC 2010年,32位),Windows 8.1操作系統
  3. 使用的無動態加載的DLL
  4. 沒有使用第三方DLL的
  5. 這是一個QTWidget應用程序。

方法(嘗試兩種試劑盒MinGW的32位& MSVC2012 OpenGL的32位)

  1. 構建應用程序之後獲得釋放的exe。複製並粘貼到我們想要的其他文件夾(假設爲Z:\ abc)
  2. 轉到Qt工具包(MinGW或MSVC)安裝的文件夾(在我的情況下:Z:\ Qt \ 5.4 \ mingw491_32(或)Z: \ Qt的\ 5.4 \ msvc2012_opengl)
  3. 搜索的* .dll
  4. 複製所有的DLL並粘貼到EXE文件夾放置。那是(z:\ abc)
  5. 運行應用程序(在我的情況下它正確啓動)。
  6. 運行應用程序時,刪除所有複製的DLL文件。

    6.1)雖然刪除,Windows會顯示爲DLL文件,這是 正在使用的應用程序(文件正在使用)提示,因爲這些DLL的初期加入。保持原樣。

    6.2)其他DLL文件將按照我們的要求被刪除。

  7. 關閉應用程序並重新打開它(在我的情況下它正常啓動)。
  8. 所以在這裏我們得到了所需的DLL的

這不是一個正確的方式,但它可能在某些情況下幫助。

注意

雖然複製所有DLL的,獲取文件已經存在消息時,保持雙方的不同名稱的文件作爲系統決定。如果應用程序不會運行,那麼我們可以嘗試使用這些重命名的文件。

相關問題