You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CLion中运行Qt应用程序时出现退出码-1073741515问题求助

解决CLion中Qt项目运行报错0xC0000135(缺少DLL)的问题

问题描述

在CLion中配置Qt 6.6.1(MinGW 64位)项目,构建正常但运行时直接返回错误:

Process finished with exit code -1073741515 (0xC0000135)

已尝试将Qt的bin目录添加到系统PATH但无效。

项目CMakeLists.txt配置:

cmake_minimum_required(VERSION 3.23)
project(Chess)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_PREFIX_PATH "D:\\Libraries\\Qt\\6.6.1\\mingw_64\\lib\\cmake")

find_package(Qt6Widgets REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

add_executable(Chess
        main.cpp
        src/game/headers/board.h
        src/game/board.cpp
        src/game/headers/piece.h
        src/utils/headers/util.h
        src/game/headers/move.h
        src/game/headers/boardState.h
        src/moveGeneration/headers/moveGenerator.h
        src/moveGeneration/moveGenerator.cpp
        src/engines/headers/counter.h
        src/engines/headers/engine.h
        src/engines/headers/random.h
        src/engines/headers/greedy.h
        src/utils/headers/zobrist.h
        src/utils/zobrist.cpp)

target_link_libraries(Chess PRIVATE Qt6::Widgets)

测试用main.cpp代码:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QMessageBox>
#include <QVBoxLayout>
#include <iostream>

int main(int argc, char *argv[]) {
    std::cout << "HERE";
    QApplication app(argc, argv);

    // Create a QWidget (window)
    QWidget window;

    // Create a QPushButton (button)
    auto *button = new QPushButton("Click me!", &window);

    // Connect the button click event to a slot (function)
    QObject::connect(button, &QPushButton::clicked, [&]() {
        // Show a message box when the button is clicked
        QMessageBox::information(&window, "Message", "Button clicked!");
    });

    // Set the layout for the window
    auto *layout = new QVBoxLayout(&window);
    layout->addWidget(button);

    // Set up the main window
    window.setLayout(layout);
    window.setWindowTitle("Qt Hello World");
    window.setGeometry(100, 100, 400, 200);
    window.show();

    // Enter the Qt event loop
    return app.exec();
}

解决方案

1. 确保MinGW版本完全匹配

Qt的MinGW编译包和CLion使用的Toolchain必须是同一版本:

  • 打开Qt安装目录下的D:\Libraries\Qt\6.6.1\mingw_64\bin,运行gcc.exe -v查看版本(如GCC 13.2.0)
  • 在CLion中打开File > Settings > Build, Execution, Deployment > Toolchains,确认MinGW工具链的版本与Qt完全一致,不一致则更换为Qt自带的MinGW路径(D:\Libraries\Qt\6.6.1\mingw_64)

2. 在CLion运行配置中直接指定环境变量

系统PATH修改后可能需要重启系统才生效,可直接在CLion中为当前运行配置添加环境变量:

  • 打开Run > Edit Configurations
  • 找到当前的Chess运行配置,点击Environment variables的编辑按钮
  • 添加PATH=D:\Libraries\Qt\6.6.1\mingw_64\bin;%PATH%,保存后重新运行

3. 使用windeployqt自动复制依赖DLL

这是Qt官方提供的最可靠方法,会自动收集所有需要的DLL:

  • 找到编译后的exe文件,默认在build-Chess-xxx\Debug或Release目录下
  • 打开开始菜单中的Qt 6.6.1 (MinGW 64-bit)终端,cd到exe所在目录
  • 运行命令:windeployqt Chess.exe
  • 直接运行目录下的exe文件,问题即可解决

4. 调整CMake配置细节

  • 将find_package(Qt6Widgets REQUIRED)改为find_package(Qt6 REQUIRED COMPONENTS Widgets),确保CMake正确加载所有Qt组件
  • 确认CMAKE_PREFIX_PATH路径正确,路径中的反斜杠需用双反斜杠或单斜杠

5. 区分Debug/Release模式的DLL

  • Debug模式需要带d后缀的Qt DLL(如Qt6Widgetsd.dll),Release模式使用不带后缀的版本
  • 如果编译的是Debug模式,运行windeployqt时需加上--debug参数:windeployqt --debug Chess.exe

内容的提问来源于stack exchange,提问作者Popo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:28:15