debug assertion failed怎么解决_常见的错误集合解决方案(二)

本文总结了Qt开发中遇到的各种错误及解决方案,包括Qt与VTK结合时的问题,如QVTKWidget插件导致的调试错误、UI文件无法打开、VTK运行时访问冲突等。解决方案涉及Qt、VTK的配置、库文件路径设置、DLL插件管理和编译问题。此外,还涵盖了Qt UI文件无法生成头文件、外部符号解析错误等常见问题及其解决方法。
摘要由CSDN通过智能技术生成

常见的错误集合解决方案(一)

23507477ebf62697d778493711519414.png 03e7e1910f4d26f6c6b9906ba736c5d0.gif

七、

关于在Qt中使用QVTKWidget插件问题

问题描述:将QVTKWidget插件的dll放到Qt下面,但是出现了一个现象,就是Release下面可以生成并运行,但是Debug下面死活运行不了,程序启动不了(但是可以生成成功)

问题解决:

第一:检查是否包含了VTK下面的bin文件是否在VS中配置;

第二:如果配置了还是不行,那就注意了,因为下载的PCl中的VTK并不支持Qt的可视化,就必须要自己下载VTK的源码进行CMake编译,具体的编译见链接,编译完了我们会得到支持Qt的可视化版的“进化态”的VTK;

第三:因为需要将Qt和VTK结合嘛,我们的程序可以生成表示代码没问题,但是执行的时候出现问题,表示程序启动然后在链接动态库的过程中出现了问题,所以找到原来的VTK目录下的bin目录中的一个叫vtkGUISupportQt-8.1.dll的文件,将我们CMake编译的VTK中的Debug下的该文件复制覆盖原来的这个即可,然后就可以执行得到界面了

后续问题:这里出现了另外的一个问题,就是加入了DLL插件后,有时候在VS中打开UI文件时,出现无法打开的问题,这里暂时的解决是先把DLL插件从文件目录下移除,就可以打开了,但是这时点击去打开的UI是没有QVTK的窗口的,这是一个不好的问题。但是把release下的dll放在Qt下面又是可以打开UI界面的,但是放Debug的dll到Qt下面就会出现问题,目前不知道为啥会出现这个

03e7e1910f4d26f6c6b9906ba736c5d0.gif

八、关于无法打开ui_mainwindow.h、moc_xxxx.cpp和qrc_xxxx.cpp的解决方案

问题描述:在打开别人的工程或者打开网上下载的工程的时候会出现无法打开moc_xxxx.cpp和qrc_xxxx.cpp文件?

问题解决:首先确定下这两个文件都是什么文件,一般来讲这些文件都是在VS下的Qt编程的时候出得到的生成文件,一般都是在Generated Files中,如下:

11514b0dac84ebf784d67e60af7760a8.png

但是在有些时候这几个文件是无法打开的,下面一个个文件来说明下怎么解决:

① ui_xxx.cpp无法打开:这个文件是和UI界面联系的h文件,右键重新编译UI即可

② moc_xxxx.cpp无法打开:点击和这个cpp文件相对应的.h文件,然后右键编译即可得到

③ qrc_xxxx.cpp无法打开:这个文件是和资源文件相关联的cpp文件,找到对应的资源文件,然后右键编译即可得到

03e7e1910f4d26f6c6b9906ba736c5d0.gif

九、VTKBug——VTK8.1运行时出错:0xC0000005: 读取位置 0x00000000 时发生访问冲突

问题描述:

d5aaa97060457255296588012dbf44c6.png

遇见这种问题一般都是空指针,即:指针里没有赋值。如果你对null 进行操作就会产生空指针异常

根据VTK官方解释:VTK/VTK 6 Migration/Factories now require defines。英文不喜欢看,可以看一下中文的:VTK/VTK6 迁移/“工厂化”需要的定义。

可以从中发现之前的代码由于是VTK5.10.1版本写的,可以正常运行,但是在VTK6之后的版本,VTK采用了工厂模式,而工厂模式需要“自动初始化”,具体取决于在VTK配置时启用哪些模块。如果您启用所有模块,并在不使用CMake的情况下构建项目,则需要在项目中进行一些定义,以使工厂正常工作。

9月10号, 2013,有一个新的宏添加进来,可以让这个过程更加简单。

解决方法

在源文件头部添加代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值