Qt6 MSVC环境下C++及Python项目QWebEngine无法正常工作问题求助
Qt6 MSVC环境下C++及Python项目QWebEngine无法正常工作问题求助
我现在在Qt6 + MSVC环境下不管是C项目还是Python项目都跑不起来,核心需求是要在项目里用到QWebEngine组件。我已经安装了最新的Qt 6.8.2 MSVC版本,也装了Visual Studio 2022和C 2015-2022的运行库,但还是遇到了一堆问题,折腾好几天了都没解决,想请大家帮忙看看。
C++项目情况
我的C++项目用CMake构建,以下是我的CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.24) project(mBoard_0_1_0) set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe") set(CMAKE_CXX_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe") set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) #set(CMAKE_PREFIX_PATH "C:/Qt/6.4.2/mingw_64/") set(CMAKE_PREFIX_PATH "C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6") # for msvc message(STATUS "Qt6 found at: ${Qt6_DIR}") message(STATUS "CMAKE_PREFIX_PATH is: ${CMAKE_PREFIX_PATH}") find_package(Qt6 COMPONENTS Core Gui Widgets REQUIRED) add_executable(mBoard_0_1_0 main.cpp MainWindow.h mBoard.h sizes.h mNote.h MainWindow.cpp mBoard.cpp mNote.cpp test-widget.cpp test-widget.cpp) add_executable(mBoard_0_1_0_mysql mysql.cpp) target_link_libraries(mBoard_0_1_0 PUBLIC Qt6::Core Qt6::Gui Qt6::Widgets ) message(STATUS "Qt6Widgets_DIR: ${Qt6Widgets_DIR}") if(Qt6Widgets_FOUND) message(STATUS "Qt6Widgets found!") else() message(FATAL_ERROR "Qt6Widgets NOT found!") endif() include_directories( "C:/Qt/6.8.2/msvc2022_64/include" "C:/Qt/6.8.2/msvc2022_64/include/QtWidgets" "C:/Qt/6.8.2/msvc2022_64/include/QtCore" "C:/Qt/6.8.2/msvc2022_64/include/QtGui" ) set(CMAKE_REQUIRED_INCLUDES ${Qt6Widgets_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES Qt6::Widgets Qt6::Core) set(CMAKE_REQUIRED_FLAGS "-std=c++20") include(CheckCXXSourceCompiles) check_cxx_source_compiles(" #include <QWidget> int main() { QWidget w; return 0; } " HAVE_QWIDGET) message(STATUS "HAVE_QWIDGET: ${HAVE_QWIDGET}") if (HAVE_QWIDGET) message(STATUS "QWidget is found!") else() message(FATAL_ERROR "QWidget not found!") endif() if (WIN32) set(DEBUG_SUFFIX) if (MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug") set(DEBUG_SUFFIX "d") endif () set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}") if (NOT EXISTS "${QT_INSTALL_PATH}/bin") set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..") if (NOT EXISTS "${QT_INSTALL_PATH}/bin") set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..") endif () endif () if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll" "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/") endif () foreach (QT_LIB Core Gui Widgets) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${QT_INSTALL_PATH}/bin/Qt6${QT_LIB}${DEBUG_SUFFIX}.dll" "$<TARGET_FILE_DIR:${PROJECT_NAME}>") endforeach (QT_LIB) endif ()
CMake构建错误日志
执行CMake时得到以下输出,卡在了HAVE_QWIDGET的检查上,而且还提示找不到WrapVulkanHeaders,但这个问题在MinGW环境下是没有的,而且项目用MinGW编译完全正常:
"C:\Program Files\JetBrains\CLion 2022.3.1\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=C:/Program Files/JetBrains/CLion 2022.3.1/bin/ninja/win/ninja.exe" -DCMAKE_PREFIX_PATH=C:/Qt/6.8.2/msvc2022_64 -G Ninja -S C:\Users\dot\CLionProjects\mBoard-0.1.0 -B C:\Users\dot\CLionProjects\mBoard-0.1.0\build-msvc-1 -- Qt6 found at: C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6 -- CMAKE_PREFIX_PATH is: C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6 -- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR) -- Qt6Widgets_DIR: C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6Widgets -- Qt6Widgets found! -- HAVE_QWIDGET:
Python项目情况
为了测试MSVC环境的Qt是否正常,我昨天还装了PyQt6,结果同样出问题。我的Python项目用了虚拟环境,PyQt6和PyQt6-WebEngine都是通过pip安装的。
项目代码片段(开头3行)
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from PyQt6.QtWebEngineWidgets import QWebEngineView from PyQt6.QtCore import QUrl
运行错误日志
运行时直接报DLL加载失败:
C:\Users\dot\PycharmProjects\Bujo\venv\Scripts\python.exe C:/Users/dot/PycharmProjects/Bujo/main.py Traceback (most recent call last): File "C:\Users\dot\PycharmProjects\Bujo\main.py", line 2, in <module> from PyQt6.QtWebEngineWidgets import QWebEngineView ImportError: DLL load failed while importing QtWebEngineWidgets:
我这几天试了各种方法都没解决,最优先还是想让C++项目能正常使用QWebEngine,希望大家能给点思路或者解决方案,非常感谢!
备注:内容来源于stack exchange,提问作者dorothy
相关产品推荐
相关产品推荐

