为什么 CLion 可以正确构建和链接 Qt,但不能运行我的可执行文件?

Nic*_*KNL 3 c++ qt cmake dynamic-linking clion

概括

我正在尝试在 Windows 上的 Clion 中编译和运行/调试 Qt 代码。CMake 和构建过程都不会返回错误。

发生以下情况:

  1. 当我尝试跑步时,我得到 Process finished with exit code -1073741511 (0xC0000139)

  2. 当我尝试调试时,我得到 Process finished with exit code 1

  3. 当我尝试直接通过 Windows CMD 运行可执行文件时,可执行文件按预期运行。

  4. 当我将所有 dll 文件从../Qt/5.12.6/mingw73_64/bin项目cmake-build-debug文件夹复制到项目文件夹时,可执行文件会按预期在 CLion 中运行和调试。

我的设置

  • 视窗 10
  • Qt 5.12.6(mingw73_64 构建)
  • CLion 2019.2.5
  • MinGW (x86_64-8.1.0-win32-seh-rt_v6_rev0)
  • CMake(捆绑,3.15.3)

其他发现

我相信 StackOverflow 上有许多相关主题可以解决相同的问题。但是没有人设法为我认为是路径/环境问题提供明确的答案。许多建议归结为“将 Qt 添加到您的路径/路径/路径环境变量并重新启动重新启动!”,和/或主要与 linux 安装有关。因此,我希望对于在此上下文中遇到相同错误代码的人来说,这成为一个更完整的问题和答案,因为它可能与同一问题有关。

由于在 CLion 之外工作(如 (3) 所示)并且在我复制 DLL (4) 时在 CLion 内部工作,我相信由于 CLion 相关环境问题,我正在处理动态链接问题。将 Qt bin 文件夹添加C:\Qt\5.12.6\mingw73_64\bin到我的System Environment Variables制作中,以便我可以直接从 CMD 运行 exe 文件。请注意,我将 Qt bin 文件夹路径添加到Path变量中。

鉴于有些人在网上提到由于 CLion 以某个系统用户身份运行,这可能是用户变量的问题,我还将上述路径添加为User Environment Variable, 再次Path。可惜。

此外,我尝试通过Settings -> Appearance & Behavior -> Path Variables. 在这里,我尝试了Qt的bin文件夹映射到PathPATHQT_DIR分别。尽管我尝试了很多次重启,但仍然没有成功。在更改路径等之间多次尝试重新启动 Windows 和实际关闭。

主要问题:

如何解决我描述的问题,以便我可以在 CLion 中运行和调试我的 Qt 构建,而不必将 Qt 相关的 DLL 复制到cmake-build-debug可执行文件所在的位置。

CMakeLists.txt

Settings -> Build, Execution, Deployment -> CMake我已经设置CMake options: -DCMAKE_PREFIX_PATH=C:\\Qt\\5.12.6\\mingw73_64\\lib\\cmake

cmake_minimum_required(VERSION 3.8)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 14)

# Include a library search using find_package()
# via REQUIRED, specify that libraries are required
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)

set(SOURCE_FILES main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

# specify which libraries to connect
target_link_libraries(${PROJECT_NAME} Qt5::Core)
target_link_libraries(${PROJECT_NAME} Qt5::Gui)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)
Run Code Online (Sandbox Code Playgroud)

主程序

cmake_minimum_required(VERSION 3.8)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 14)

# Include a library search using find_package()
# via REQUIRED, specify that libraries are required
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)

set(SOURCE_FILES main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

# specify which libraries to connect
target_link_libraries(${PROJECT_NAME} Qt5::Core)
target_link_libraries(${PROJECT_NAME} Qt5::Gui)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)
Run Code Online (Sandbox Code Playgroud)

Nic*_*KNL 9

这已经为我解决了。

解决方法如下:

  1. edit configurations
  2. 将Qt bin文件夹添加到 Working directory
  3. 命中OK和/或APPLY

现在我可以直接在 CLion 中运行和构建我的 Qt 应用程序。

编辑配置选项 运行/调试配置窗口