Advertisement

在QT 5.9.4和MSVC 2017环境下编译时遇到程序异常终止问题

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文章针对使用Qt 5.9.4与Microsoft Visual Studio 2017进行开发时所遭遇的程序崩溃问题,提供解决策略与技术指导。 在使用MSVC编译运行Qt程序的过程中遇到了一些问题:虽然编译可以通过,但在实际运行时会出现异常并导致程序终止。然而,当切换到Mingw进行编译后,则不会出现此类问题。考虑到这是一个非常基础的Qt程序,可以排除是代码本身的问题。 经过多次重装系统尝试解决问题之后发现情况依然存在,并且也不像是VS2017或QT自身的问题。查阅了大量网上资料但未能找到适合我的解决方案。最后确定是因为需要配置系统的环境变量才能解决这个问题。具体的操作步骤将在下面记录下来,希望能帮助到有类似困扰的人。 原文提到的原创文章获得了若干赞数和访问量,在此不作详细说明,因为重点在于分享如何解决问题的方法而非个人成就或特定平台的关注度信息。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • QT 5.9.4MSVC 2017
    优质
    本文章针对使用Qt 5.9.4与Microsoft Visual Studio 2017进行开发时所遭遇的程序崩溃问题,提供解决策略与技术指导。 在使用MSVC编译运行Qt程序的过程中遇到了一些问题:虽然编译可以通过,但在实际运行时会出现异常并导致程序终止。然而,当切换到Mingw进行编译后,则不会出现此类问题。考虑到这是一个非常基础的Qt程序,可以排除是代码本身的问题。 经过多次重装系统尝试解决问题之后发现情况依然存在,并且也不像是VS2017或QT自身的问题。查阅了大量网上资料但未能找到适合我的解决方案。最后确定是因为需要配置系统的环境变量才能解决这个问题。具体的操作步骤将在下面记录下来,希望能帮助到有类似困扰的人。 原文提到的原创文章获得了若干赞数和访问量,在此不作详细说明,因为重点在于分享如何解决问题的方法而非个人成就或特定平台的关注度信息。
  • STM32CUBEMX生成的HAL库非KEILprintf
    优质
    本文探讨了使用STM32CubeMX工具生成HAL库后,在非Keil开发环境中编译时出现的printf函数相关问题,并提供了解决方案。 使用STM32CUBEMX生成的HAL库,在非KEIL环境下且不需要Microlib支持的情况下,可以完美解决printf无法输出、仿真卡死或需要点击三次才能运行正常的问题。这是最佳解决方案。
  • Linux安装FastDFS集成Nginx及解决方案
    优质
    本文章详细记录了作者在Linux系统中安装FastDFS以及与Nginx集成过程中所遇问题及其解决方法,旨在为有相同需求的技术人员提供参考。 背景: 我在阿里云ECS服务器上安装了CentOS 7系统,在此过程中遇到了一些问题。 问题及解决方法: 问题1:在安装过程中遇到错误提示“ERROR – file: storage_ip_changed_dealer.c, line: 163, connect to tracker server xx.xx.xx.xx:22122 fail, errno: 4, error info: Interrupted system call”或“ERROR – file: storage_ip_changed_dealer.c, line: 163, connect to tracker server xx.xx.xx.xx:2”。
  • 配置PCLQt的两个QVTKWidgetPlugin
    优质
    本文介绍了作者在集成Point Cloud Library (PCL)与Qt框架过程中所面临的QVTKWidgetPlugin相关挑战,并分享了具体的解决方案。 在IT领域特别是图形用户界面(GUI)开发中,Qt是一个非常流行的开源框架;PCL则是处理3D点云数据的强大库。当需要将经过PCL处理的3D点云数据显示到Qt应用程序时,通常会用到QVTKWidgetPlugin。 QVTKWidgetPlugin是连接Qt与VTK(可视化工具包)的关键组件,它使在Qt界面中嵌入VTK的图形窗口成为可能。由于PCL广泛使用了VTK进行三维渲染,因此QVTKWidgetPlugin成为了将两者结合的重要桥梁。 配置PCL和Qt集成的过程包括以下步骤: 1. **安装依赖**:确保已安装Qt、PCL及VTK库,并且它们之间版本兼容。 2. **构建PCL**:使用CMake设置并编译PCL,确保包含Qt5和VTK模块以完成链接工作。 3. **配置QVTKWidgetPlugin**:在Qt的plugins目录下创建或找到名为`qtvtk`的新文件夹,并将从PCL库中获取到的`libQVTKWidgetPlugin.so`(或者Windows系统中的`.dll`)放置于此处。 4. **设置Qt项目**:确保你的Qt项目包含了必要的头文件和链接了适当的库,例如在.pro文件添加相应的库连接命令。 5. **使用QVTKOpenGLWidget**:创建一个`QVTKOpenGLWidget`实例,并将其加入到布局中以展示3D内容。 6. **加载PCL数据**:通过构建VTK渲染器并设置点云可视化来显示从PCL处理的数据。 在开发过程中,可能还会遇到线程同步、事件处理等细节问题。正确配置和使用QVTKWidgetPlugin将有助于你在Qt应用中流畅地展示经过PCL处理的3D点云数据,并提供直观的用户交互体验。
  • CMakeOpenCV3.2无法载的文件
    优质
    本文探讨了在使用CMake编译OpenCV3.2过程中遇到的一个特定问题——无法下载所需文件,并提供了可能的解决方案和解决步骤。 在使用CMake构建OpenCV 3.2的过程中可能会遇到的一个常见问题是,在尝试自动下载某些依赖库或模块时卡住。这通常发生在Downloading xxxxx...步骤中,表明CMake正试图从网络上获取特定文件但未能成功完成。为解决这个问题,需要采取手动干预的措施来继续编译过程。 首先了解一下背景:CMake是一个跨平台构建系统,常用于管理项目依赖和配置设置。在构建OpenCV时,它会自动检查并下载一些必要的第三方库,例如FFmpeg、DNN(深度神经网络模块)以及xfeatures2d等。这些库对于执行图像处理及计算机视觉功能至关重要。 为解决上述问题,请按照以下步骤操作: 1. **手动获取依赖项**:根据相关文档指示单独下载FFmpeg、DNN和xfeatures2d的源代码或预编译二进制文件,并解压缩到指定位置。这些文件通常以rar格式提供,分别标记为ffmpeg.rar, dnn.rar 和 xfearures2d.rar。 2. **配置CMake**:启动CMake GUI工具,在“Source code directory”中输入包含CMakeLists.txt的目录路径;在“Build directory”里设置构建输出的位置。点击Configure按钮让CMake识别项目所需环境信息。 3. **指定库位置**:在第一次Configuration过程中,你会看到一系列变量等待设定值。找到与FFmpeg、DNN和xfeatures2d相关的选项(如`OPENCV_EXTRA_MODULES_PATH`, `FFMPEG_ROOT_DIR`等),并将之前手动下载的文件路径填入相应字段中。如果看不到相关设置,请切换至“Advanced”模式查看并调整。 4. **重新配置与生成**:完成所有必要的变量设定后,再次点击Configure进行最终确认,并通过Generate按钮创建适用于你的开发环境(如Visual Studio 2015)的构建文件或解决方案。 5. **编译项目**:打开由CMake产生的解决方案,在IDE中执行常规编译步骤。确保每个依赖库都被正确链接起来;若无错误,整个编译过程应顺利结束。 6. **安装与测试**:完成项目的构建后,请将生成的库文件安装到指定位置,这通常通过修改CMake的`INSTALL`目标来实现。编写一些简单的程序以验证新编译好的OpenCV库是否正常工作。 当使用CMake下载OpenCV依赖项遇到问题时,采取手动干预的方法可以解决问题。理解如何配置和操作CMake对于解决这类问题是至关重要的,并且保持稳定的网络连接也是必要的,因为即使采用手工方式安装某些库文件可能仍需更新或获取其他相关组件。对于像OpenCV这样的大型项目而言,掌握使用CMake的技巧非常重要。
  • Qt 5.15.2 MSVC 2017
    优质
    本简介探讨了如何在Windows环境下使用Visual Studio 2017与Qt 5.15.2进行C++应用程序开发,涵盖环境搭建及常见问题解决。 使用的是qt 5.15.2 和 msvc 2017 这个环境搭建配置。至于为何只能这样设置,并不清楚原因,可以参考其他博主的文章看看是否提到为什么不能用mingw的原因。
  • MATLAB 2011b中使用VS2012
    优质
    本文章介绍了作者在将MATLAB 2011b与Visual Studio 2012集成过程中所遇到的编译器兼容性问题,并分享了解决方案。 在使用MATLAB 2011b时遇到找不到编译器VS2012的问题。
  • 记录:Ubuntu18.04与Autoware1.12.0运行Runtime Manager的花屏重叠
    优质
    本文记录了作者在使用Ubuntu 18.04系统搭配Autoware 1.12.0版本时,运行Runtime Manager过程中遭遇的画面显示异常(包括花屏与图像重叠)的问题及解决方案。 安装完成Autoware后,在运行官方的ROSBAG并启动Runtime Manager时可能会出现花屏重叠的现象。解决办法如下: 1. 安装 wxpython 4.0.6 gtk2: ``` pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk2/ubuntu-18.04 wxPython ``` 2. 安装 libsdl1.2-dev: ``` sudo apt install libsdl1.2-dev ``` 3. 修改 autoware.ai/src/autoware/utilities/runtime_manager/scripts 目录下的相关脚本。
  • VC运行MiniGUI
    优质
    本简介讲解了如何在VC(Visual C++)开发环境中配置、编译及调试MiniGUI应用程序的过程与技巧。适合希望使用MiniGUI进行图形界面开发的程序员阅读参考。 《在VC下编译运行MiniGUI程序》 MiniGUI是一种轻量级的图形用户界面库,适用于嵌入式系统及Linux环境。通过适当的配置与设置,在Visual C++(VC)环境下也能成功地构建并执行基于MiniGUI的应用程序。 本段落将介绍如何进行以下步骤:首先熟悉MinigUI的基本概念;接着分析一个典型的入门示例——HelloWorld程序的代码结构,该示例展示了创建基本窗口并在其上显示文本的方法。最后,会提供一份详细的指南来说明怎样在VC环境下配置和编译MiniGUI项目。 **一、理解MiniGUI** MiniGUI提供了用于构建图形界面的应用编程接口(API),涵盖如窗口管理、图像绘制及事件处理等功能模块。它的设计目标是简化开发人员创建具有用户交互功能的软件的过程,尤其是在资源有限的嵌入式设备上使用时尤为有效。 **二、HelloWorld程序解析** 在C语言中,“Hello World”通常表示输出“Hello, world!”到控制台窗口中的代码片段;而在MiniGUI环境中,则需通过调用相应API来实现在图形界面内显示文本。以下是经过修改的示例源码: ```c #include #include #include #include #include #include #define IDC_CTRL1 100 int InitWindow(HWND hWnd); static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam); // 窗口初始化函数 int InitWindow(HWND hWnd) { // ... } // 消息处理函数 static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) { HDC hdc; switch (message) { case MSG_CREATE: // 初始化窗口设置 break; case MSG_PAINT: // 触发重绘事件时的响应代码 hdc = BeginPaint(hWnd); TextOut(hdc, 125, 50, Hello world); EndPaint(hWnd, hdc); return 0; case MSG_CLOSE: DestroyMainWindow(hWnd); PostQuitMessage(hWnd); return 0; } } ``` **三、VC环境下的编译与运行** 为了能够在Visual C++中成功构建并执行基于MiniGUI的项目,需要完成以下步骤: 1. 安装MiniGUI库。 2. 确保开发工具能够访问到头文件和库的位置信息。 3. 在项目的属性页里设置正确的包含路径、链接器选项等。 通过以上介绍的内容,读者可以掌握在Windows系统上利用VC编译并运行基于MinigUI程序的基本方法。这对于进一步学习与使用该图形界面框架具有重要的意义。
  • Linux运行C
    优质
    本教程详细介绍了如何在Linux操作系统中设置开发环境,并通过具体步骤讲解了从编写、编译到运行C语言程序的过程。 在Linux下编译并运行C/C++程序的流程包括环境设定、使用编译命令以及编写Makefile等内容。首先需要安装必要的开发工具,如GCC(GNU Compiler Collection),用于支持C或C++语言的代码编译与链接操作;其次,在完成源文件编写后,通过g++ -o 可执行文件名 源码文件名等指令进行程序编译,并使用make命令配合Makefile实现自动化构建流程。