Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么CLion可以正确构建和链接Qt,但不能运行我的可执行文件? 总结_C++_Qt_Cmake_Clion_Dynamic Linking - Fatal编程技术网

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

C++ 为什么CLion可以正确构建和链接Qt,但不能运行我的可执行文件? 总结,c++,qt,cmake,clion,dynamic-linking,C++,Qt,Cmake,Clion,Dynamic Linking,我试图在Windows上用Clion编译和运行/调试Qt代码。CMake和构建过程都不返回错误 出现以下情况: 当我尝试运行时,我得到退出代码为-1073741511(0xC0000139)的进程已完成 当我尝试调试时,我得到了退出代码1的过程 当我试图通过Windows CMD直接运行可执行文件时,可执行文件会按预期运行 当我将所有dll文件从。/Qt/5.12.6/mingw73_64/bin复制到项目的cmake build debug文件夹时,可执行文件会按预期在CLion中运行和

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

出现以下情况:

  • 当我尝试运行时,我得到退出代码为-1073741511(0xC0000139)的
    进程已完成

  • 当我尝试调试时,我得到了退出代码1的
    过程

  • 当我试图通过Windows CMD直接运行可执行文件时,可执行文件会按预期运行

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

  • 我的设置
    • 视窗10
    • Qt 5.12.6(mingw73_64构建)
    • 克莱恩2019.2.5
    • MinGW(x86_64-8.1.0-win32-seh-rt_v6_rev0)
    • CMake(捆绑式,3.15.3)
    其他调查结果 我相信在StackOverflow上有很多相关的话题都涉及到同样的问题。但没有一个能够为我认为的路径/环境问题提供明确的答案。许多建议归结为“将Qt添加到path/path/path环境变量并重新启动!”,和/或主要与linux安装有关。因此,我希望对于在这种情况下遇到相同错误代码的人来说,这是一个更完整的问题和答案,因为它可能与这个问题有关

    当我复制DLL时,事情在CLion之外工作(如(3)所示),在CLion内部工作(4),我相信我正在处理与CLion相关的环境问题导致的动态链接问题。将Qt-bin文件夹(即
    C:\Qt\5.12.6\mingw73\u 64\bin
    )添加到我的
    系统环境变量中,这样我就可以直接从CMD运行exe文件了。注意,我将Qt-bin文件夹路径添加到
    path
    变量中

    鉴于一些人在网上提到,由于CLion作为某个系统用户运行,用户变量可能存在问题,我还将上述路径添加为
    用户环境变量
    ,再次添加
    路径
    。但是,唉

    此外,我还尝试通过
    Settings->Appearance&Behavior->Path Variables
    将其作为环境变量直接添加到CLion中。在这里,我尝试将Qt-bin文件夹分别映射到
    Path
    Path
    、和
    Qt\u-DIR
    。尽管我尝试了多次重新启动,但仍然没有成功。在更改路径等过程中,多次尝试Windows重新启动和实际关闭

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

    CMakeLists.txt 在
    Settings->Build,Execution,Deployment->CMake
    中,我将
    CMake选项设置为
    -DCMAKE\u PREFIX\u PATH=C:\\Qt\\5.12.6\\mingw73\u 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)
    
    main.cpp
    #包括
    #包括
    #包括
    #包括
    int main(int argc,char*argv[]){
    QApplication应用程序(argc、argv);
    QWidget小部件;
    widget.resize(640480);
    widget.setWindowTitle(“你好,世界!!!”;
    QGridLayout*gridLayout=新的QGridLayout(&widget);
    QLabel*label=新的QLabel(“你好,世界!!!”;
    标签->设置对齐(Qt::AlignVCenter | Qt::AlignHCenter);
    gridLayout->addWidget(标签);
    widget.show();
    返回app.exec();
    }
    
    与此同时,我已经解决了这个问题

    解决办法如下:

  • 转到
    编辑配置
  • 将Qt bin文件夹添加到
    工作目录
  • 点击
    OK
    和/或
    APPLY
  • 现在我可以直接在CLion中运行和构建我的Qt应用程序了


    我会给你买你最喜欢的饮料,我花了24小时才找到这个解决方案。现在我知道了这个设置,这非常有意义。显然,Qt Creator设置了路径,您的评论是我在CLion中的项目中缺少的+1谢谢