最近在做一个基于Qt的三维点云软件,涉及到点云的显示及操作,所以要在Qt中完成QVTKWidget插件的添加。在浮躁的心态下折腾了两天才成功的实现Qt5.8_VTK7.0_VS2015的编译配置及测试。
整个过程中反思和收获并存:
反思:过程过于浮躁,查阅资料时不够耐心!!
收获:新的知识(VTK/CMake/快速提取某一文件夹中文件名等)


以下是整个过程中一些注意事项和测试中遇到的问题:

1.配置
整个配置过程主要参考[dedje]的文章,虽然所用的版本都不一样,但整个过程还是相同的。只是针对下面过程进行一个详细说明。

该过程中拷贝的QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib都位于解决方案中的相关目录,我的是D:\Software\Qt\VTK7.0_sln\bin\Release和D:\Software\Qt\VTK7.0_sln\lib\Release。
2.测试中问题
按照[dedje]博友给出的测试代码,测试还是出现问题


,最终查阅资料发现是因为VS编译的问题。所以需要在代码前添加源文件。
最终测试代码为:

#include "vtkAutoInit.h"
// 如果编译时编译的是OpenGL2,则下面就改为vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkRenderingOpenGL); // VTK was built with vtkRenderingOpenGL
VTK_MODULE_INIT(vtkInteractionStyle);
#include <QtWidgets/QApplication>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkImageViewer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleImage.h>
#include <vtkJPEGReader.h>
#include <vtkRenderer.h>
#include <QVTKWidget.h>int main(int argc, char *argv[])
{QApplication a(argc, argv);QVTKWidget widget;widget.resize(256, 256);vtkSmartPointer<vtkSphereSource>sphereSource = vtkSmartPointer<vtkSphereSource>::New();sphereSource->Update();vtkSmartPointer<vtkPolyDataMapper>sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();sphereMapper->SetInputConnection(sphereSource->GetOutputPort());vtkSmartPointer<vtkActor>sphereActor = vtkSmartPointer<vtkActor>::New();sphereActor->SetMapper(sphereMapper);vtkSmartPointer<vtkRenderWindow>renderWindow = vtkSmartPointer<vtkRenderWindow>::New();vtkSmartPointer<vtkRenderer>renderer = vtkSmartPointer<vtkRenderer>::New();renderWindow->AddRenderer(renderer);renderer->AddActor(sphereActor);renderer->ResetCamera();widget.SetRenderWindow(renderWindow);widget.show();return a.exec();
}

但紧接着又出现以下问题:(搞死了…)


对于该问题,只需要到相关VTK7.0的bin文件夹中将相关文件拷贝到运行目录中的Debug文件夹下就可以了。
最终完美实现(o)/


对于无法定位程序输入点问题,参考了博友xiao_PuZi。

C++/CLI的程序,用到了OCCI连接数据库,程序编译没问题,一运行就提示:无法定位程序输入点***于动态链接库oraocci12.dll上。
这个时候,需要先确定你的DLL文件已经放到正确的文件夹下,正确的文件位置是:C:\WINDOWS\system32。也有人说64位系统,需要放到C:\WINDOWS\SysWOW64路径下,实测并不需要。
上面的方法不行的话,可以试下:
①、将出问题的dll文件放到程序的Debug或Release文件夹下;
②、将要用的dll文件所在的路径,添加的系统的Path环境变量中。


小知识点
怎样快速提取文件夹中所有文件的名字:
为什么会突然讲到这个小技能,因为发现像VTK这种库在添加依赖项时是一件非常头疼的事情(其依赖项达到上百个),如果一个个输入是非常耗时间的。

  1. 找到VTK依赖项文件夹

    2.在该文件夹下新建一个TXT文档
    如:快速提取文件名.txt,并在该文档中添加一些内容:
    (注意空格)
    3.将文档后缀名改为“.bat”,确认后直接运行,就会在文件夹中生成了LIST.TXT文档

    可能会生成一些无关文件,只需把相关文件名删除即可。

:中等笨办法,如果有博友有更好的方法,希望可以分享下。


参考
1:http://blog.csdn.net/dedje/article/details/42025143
2:http://blog.csdn.net/xiao_puzi/article/details/69663470
3:https://stackoverflow.com/questions/18642155/no-override-found-for-vtkpolydatamapper
4:http://jingyan.baidu.com/article/d71306350d083913fdf47592.html

【Y忍冬草】Qt5.8_VTK7.0_VS2015编译配置及测试中问题相关推荐

  1. 【Y忍冬草】QT显示软件运行时间

    [Y忍冬草]QT:显示软件运行时间 一个简单的实现检测软件运行时间的小软件: 1.代码 #include "mainwindow.h" #include "ui_main ...

  2. 【Y忍冬草】获取路径、打开文件图像等

    QT:获取路径.打开文件/图像等 1. 获取路径 #include <QFileDialog> #include <QMessageBox>//---------------- ...

  3. 【Y忍冬草】Qt消息和按钮链接网址

    对于Qt实现标准消息框和按钮实现链接网址网上有很多教程,在此记录只为自己更好的查阅. 相关代码: #include "mainwindow.h" #include "ui ...

  4. opencv 配置及测试中遇到的问题及解决方法(Microsoft C++ 异常: cv::Exception,位于内存位置 问题)

    opencv 配置及测试中遇到的问题及解决方法 这是我第一次使用 opencv,配置是opencv3.4.1和Visual Studio 2019.本文主要写的是我在 配置 和 编写运行第一个测试程序 ...

  5. 【Y忍冬草】基于Qt5.8+OpenCV3.2的Basler多相机触发开发

    项目涉及到利用两个Basler相机通过外触发分别完成图像的采集工作,在前面已经成功实现单相机的触发开发工作的基础上,结果应该是很快速的完成相关开发工作,但由于自己在这犯了一个非常低级的错误,造成开发工 ...

  6. 【Y忍冬草】Qt中添加第三方插件VTK,Designer中有但Creator中没有

    版本:Qt5.8+VTK7.0 晕菜,之前在用Qt进行第三方插件VTK的时,不管是在Qt Creator中打开还是在Qt Designer中打开,都可以找到这个小东西,结果中间Qt出过一次问题,重新卸 ...

  7. Window10 OpenCV3.4.7 CMake3.18.0 QT5.5.0 编译配置及调用

    QT开发中经常遇到使用OpenCV,记录一下OpenCV库的编译调用过程. 承接各类STM32项目.JAVA.C++.Android.微信.Linux,毕业设计开发 手机:18559979152(微信 ...

  8. 【Y忍冬草】QT:Log日志功能实现

    1.简介 在利用QT进行开发的过程中经常会用到qDebug()来输出调试信息,但当程序正式发布时,这些都会被注释或者删除,这时我们就需要通过Log日志输出来代替.  Log日志是项目当中比用的功能,以 ...

  9. 【Y忍冬草】QT更改构建目录

    "你说什么样的话,你就是什么样的人" --蔡康永  真是好记性不如烂笔头. 这个小知识点在刚接触Qt的时候就知道的,结果重装了下Qt,想要去更改下构建目录,就在浆糊脑子里找啊找,最 ...

最新文章

  1. JavaScript多线程之HTML5 Web Worker
  2. 【C#】ADO .Net Entities Framework在WPF TreeView中的应用
  3. 不同制式字符串之间的转换
  4. Zookeeper的客户端Curator基本使用
  5. c++学习笔记(7) 面向对象思想
  6. Windows环境上装在VM,VM安装CentOS7
  7. netmeeting 英文开源实例
  8. 怎么写安卓手机脚本_想要挣钱创收 那就用脚本操作手机群控软件啊
  9. Toast基本使用方法
  10. python 股票分析_Python 股票分析入门
  11. justinmind夜话:程序员眼中的原型设计视频教程之书到用时方恨少
  12. HttpException: 503: Server Error for url:http://cic-1:9696/v2.0/security-groups, Service Unavailable
  13. 苹果xsmax登录id服务器无响应,iPhone XS Max无法开机了这几招轻松解决!
  14. 利用html 和css模仿必应搜索主页。(一)
  15. 理解async与await
  16. 检索 COM 类工厂中 CLSID 为 ???的组件时失败,原因是出现以下错误: 80080005。
  17. 5g局域网传输速度_5G时代网络传输速度能达到多少?
  18. 金蝶K3WISE常用数据表
  19. smb连接错误: 连接到服务器时出现问题。请检查服务器名称或IP地址,然后再试一次。如果问题持续发生,请联系系统管理员
  20. 集成电路工艺专题复习(续)

热门文章

  1. 位运算总结,我的世界里只有 0 和 1
  2. 零基础java自学流程-Java语言高级432
  3. logo设计的核心技巧分享
  4. 在R语言中实现sem进行结构方程建模和路径图可视化
  5. 焊接件技术要求怎么写_焊接件通用技术要求
  6. [附源码]java毕业设计8号体育用品销售及转卖系统
  7. Redis基本使用!
  8. linux 多台机器修改时间同步
  9. OpenStack的Telemetry Data Collection服务概述
  10. 删除下拉框只找23火星软件_下拉框推广找23火星软件