常见的错误集合解决方案(一)
七、
关于在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下面就会出现问题,目前不知道为啥会出现这个
八、关于无法打开ui_mainwindow.h、moc_xxxx.cpp和qrc_xxxx.cpp的解决方案
问题描述:在打开别人的工程或者打开网上下载的工程的时候会出现无法打开moc_xxxx.cpp和qrc_xxxx.cpp文件?
问题解决:首先确定下这两个文件都是什么文件,一般来讲这些文件都是在VS下的Qt编程的时候出得到的生成文件,一般都是在Generated Files中,如下:
但是在有些时候这几个文件是无法打开的,下面一个个文件来说明下怎么解决:
① ui_xxx.cpp无法打开:这个文件是和UI界面联系的h文件,右键重新编译UI即可
② moc_xxxx.cpp无法打开:点击和这个cpp文件相对应的.h文件,然后右键编译即可得到
③ qrc_xxxx.cpp无法打开:这个文件是和资源文件相关联的cpp文件,找到对应的资源文件,然后右键编译即可得到
九、VTKBug——VTK8.1运行时出错:0xC0000005: 读取位置 0x00000000 时发生访问冲突
问题描述:
遇见这种问题一般都是空指针,即:指针里没有赋值。如果你对null 进行操作就会产生空指针异常
根据VTK官方解释:VTK/VTK 6 Migration/Factories now require defines。英文不喜欢看,可以看一下中文的:VTK/VTK6 迁移/“工厂化”需要的定义。
可以从中发现之前的代码由于是VTK5.10.1版本写的,可以正常运行,但是在VTK6之后的版本,VTK采用了工厂模式,而工厂模式需要“自动初始化”,具体取决于在VTK配置时启用哪些模块。如果您启用所有模块,并在不使用CMake的情况下构建项目,则需要在项目中进行一些定义,以使工厂正常工作。
9月10号, 2013,有一个新的宏添加进来,可以让这个过程更加简单。
解决方法
在源文件头部添加代码: