我有一个应用程序,其项目使用CMake
中的Qt5.7
生成,
所以当import QtQuick.Controls 2.0
应用程序无法加载时出现以下错误:
无法为模块加载插件" QtQuick.Controls":无法加载 图书馆 C:\ Qt \ Qt5.7.0 \ 5.7 \ msvc2015 \ qml \ QtQuick \ Controls.2 \ qtquickcontrols2plugind.dll:找不到指定的模块。
的CMakeLists.txt
set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.7.0\\5.7\\msvc2015")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Core REQUIRED)
find_package(Qt5Qml)
find_package(Qt5Quick)
find_package(Qt5QuickControls2)
...
add_executable(MyApp ${SRC} ${HEADER} ${RESOURCES})
target_link_libraries(MyApp
Qt5::WinMain
Qt5::Core
Qt5::Qml
Qt5::Quick
Qt5::QuickControls2
)
visual studio输出中加载的DLL
文件:
'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick.2\qtquick2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Unloaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'
答案 0 :(得分:5)
我找到了解决方案,问题是QtQuick.Controls 2.0
取决于QtQuick.Templates 2.0
模块,因此我将其dll复制到输出目录并成功运行。
必需的DLL(用于Debug版本):
Qt5QuickTemplates2d.dll
Qt5QuickControls2d.dll
必需的DLL(适用于发行版):
Qt5QuickTemplates2.dll
Qt5QuickControls2.dll
答案 1 :(得分:1)
在Windows上,Qt提供了自动扫描所有Qt和QML依赖关系的部署工具:
%QTDIR%\bin\windeployqt.exe your_app.exe --qmldir your\qml\files
该工具可在QTDIR / bin / windeployqt中找到。它需要一个.exe文件 或包含.exe文件作为参数的目录,并进行扫描 依赖项的可执行文件。如果目录与。一起传递 --qmldir参数,windeployqt使用qmlimportscanner工具扫描目录中的QML文件以获取QML导入依赖项。鉴定 然后将依赖项复制到可执行文件的目录中。该 Qt5Core.dll中的硬编码本地路径进一步被替换为 相对的。
答案 2 :(得分:0)
如果您使用的是Ubunty,请尝试安装qml-module-qtquick-controls2
sudo apt install qml-module-qtquick-controls2