2013-03-11 72 views
1

我對Qt有個奇怪的問題。最近我下載了Qt 5.0.1。現在,我在Qt中以「Build-> Start」開始的每個項目都運行良好。但是如果我從資源管理器啓動它的Release版本,則不會有任何影響。如果我從勘探開始調試版本我有這樣的錯誤Qt 5.0.1無法啓動程序

enter image description here

有什麼不對?

+0

是必要的DLL的在這個exe可以找到它們的目錄? – sashoalm 2013-03-11 14:53:44

+0

我會說這是一個路徑問題。確保正確的Qt dll在路徑中。 – drescherjm 2013-03-11 14:54:31

+0

是的。所有的DLL在一個目錄中的應用程序。 – 2013-03-11 14:58:44

回答

1

我想你忘了在應用程序旁邊複製插件目錄。 Dependency Walker不會在列表中顯示它們,因爲它們是由Qt Core libs在運行時加載的。所以最終的可執行文件在編譯時並不知道這些插件的鏈接或位置。

1

準確地說,它需要的是 - 「windows」插件。它應該位於「平臺」文件夾中,如qwindows.dll

你可以在Qt5 official windows deployment guide中看到更多,但在論壇上看更多的實用信息,我。即here

簡而言之:爲了讓你的應用程序(用動態構建的Qt編譯)在其他機器上運行,你必須包含許多庫。所有的人都應該從

Qt_installation_folder/Qt_version/used_compiler/bin 
& 
Qt_installation_folder/Qt_version/used_compiler/plugins/ 

QML插件被複制應從

Qt_installation_folder/Qt_version/used_compiler/qml 
& 
Qt_installation_folder/Qt_version/used_compiler/imports 

在項目中使用,這是從準確相同的編譯器複製Qt庫非常重要複製。

下面我介紹你解釋一個例子(從above second link借用):

ROOT FOLDER 
│ YourApp.exe 
│ D3DCompiler_43.dll  // } \ 
│ libEGL.dll    // } --> If you use Qt built with ANGLE support 
│ libGLESv2.dll    // }/
│ 
│ icudt49.dll    // } \ 
│ icuin49.dll    // } --> If you use Qt built with WebKit (Unicode support) 
│ icuuc49.dll    // }/
│ 
│ Qt5Core.dll    // --> Basic Qt module, always needed 
│ Qt5Gui.dll    // --> If you use GUI module 
│ 
│ Qt5Network.dll   // } \ 
│ Qt5Qml.dll    // } --> If you use QML 
│ Qt5Quick.dll    // } --> module 
│ Qt5V8.dll     // }/
│ 
│ Qt5Multimedia.dll   // } --> If you use multimedia 
│ Qt5MultimediaQuick_p.dll // } --> from QtQuick 
│ 
├───platforms 
│  qwindows.dll   // Always needed for windows 
│ 
├───QtMultimedia    // If you import QtMultimedia 5.x 
│  declarative_multimedia.dll 
│  plugins.qmltypes 
│  qmldir 
│  Video.qml 
│ 
├───QtQuick.2     // If you import Qt.Quick 2.x 
│  plugins.qmltypes 
│  qmldir 
│  qtquick2plugin.dll