在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
相关产品推荐
相关产品推荐

