我對Qt有個奇怪的問題。最近我下載了Qt 5.0.1。現在,我在Qt中以「Build-> Start」開始的每個項目都運行良好。但是如果我從資源管理器啓動它的Release版本,則不會有任何影響。如果我從勘探開始調試版本我有這樣的錯誤Qt 5.0.1無法啓動程序
有什麼不對?
我對Qt有個奇怪的問題。最近我下載了Qt 5.0.1。現在,我在Qt中以「Build-> Start」開始的每個項目都運行良好。但是如果我從資源管理器啓動它的Release版本,則不會有任何影響。如果我從勘探開始調試版本我有這樣的錯誤Qt 5.0.1無法啓動程序
有什麼不對?
我想你忘了在應用程序旁邊複製插件目錄。 Dependency Walker不會在列表中顯示它們,因爲它們是由Qt Core libs在運行時加載的。所以最終的可執行文件在編譯時並不知道這些插件的鏈接或位置。
準確地說,它需要的是 - 「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
是必要的DLL的在這個exe可以找到它們的目錄? – sashoalm 2013-03-11 14:53:44
我會說這是一個路徑問題。確保正確的Qt dll在路徑中。 – drescherjm 2013-03-11 14:54:31
是的。所有的DLL在一個目錄中的應用程序。 – 2013-03-11 14:58:44