visual studio 使用vcpkg 配置Qt6 出现 Application failed to start because platform plugin “windows” is missing的解决办法

最近在Windows平台下使用visual studio开发Qt应用时,遇到一个常见的问题:在使用vcpkg安装的Qt库构建应用时,编译通过但是运行时会报错“Application failed to start because platform plugin “windows” is missing”。经过一番摸索,找到了解决方案,在此分享给大家。

解决方案的关键步骤如下:

  1. 进入应用程序构建生成的文件夹,找到编译生成的可执行文件所在目录。
  2. 在该目录下找到相关的Qt库文件,例如Qt6Core.dll。注意观察库文件的名字是否包含“d”后缀,例如 Qt6Cored.dll。
  3. 在vcpkg的安装目录下,有两个可选文件夹:
  • ./installed/x64-windows/Qt6/plugins/platforms
  • ./installed/x64-windows/debug/Qt6/plugins/platforms
  1. 如果Qt库文件名中包含“d”,就复制debug文件夹下的平台插件文件夹内容。否则复制非debug文件夹的内容。
  2. 将复制的平台插件文件夹内容粘贴到应用程序可执行文件所在目录的platforms文件夹下(如果没有平台插件文件夹就新建一个)。

通过上述步骤,就可以成功解决“platform plugin “windows” is missing”的问题,让编译通过的Qt应用可以正常运行。

如果使用CMake构建项目,可以在CMakeLists.txt中添加自定义命令,在编译后自动复制平台插件,实现自动化:

# assuming your target's name is app
if(WIN32)
  add_custom_command(
    TARGET app 
    POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
      ${Qt6_DIR}/../../$<$<CONFIG:Debug>:debug/>Qt6/plugins/platforms/
      $<TARGET_FILE_DIR:app>/platforms/
  ) 
endif()

参考https://stackoverflow.com/a/71526648/14669364