QT creator使用VTK时遇到的一些问题

本文记录了在QT creator中使用VTK库时遇到的编译问题,包括无法解析的外部符号错误,以及由于OpenGL版本错误导致的问题。通过检查和更新附加依赖项,以及正确设置OpenGL版本,最终成功解决所有问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:一系列的无法解析的外部符号。
在这里插入图片描述
这个问题困扰了我一天,在网上寻找大多数说是删除、清空、重新编译,但是对我的不好使,终于找到了解决方法,也就是我的VS的附加依赖项少包含了几个库。主要是最下面的几个库,我把我的附加依赖项在这里做个备份。然后问题解决了,当然这不是QT creator中的解决方法,这个是吧我VS新建QT时,拖入QVTKwidget时,进行编译出现的无法解析的问题。
在QT creator中也得把lib包含进来,如下

LIBS   += E:\python\python-pcl\PCL1.8.1\3rdParty\Boost\lib\*.lib
LIBS   += E:\python\python-pcl\PCL1.8.1\3rdParty\VTK\lib\*.lib

之前的那些问题没了,又出现了新的问题:
在这里插入图片描述

我才是我用cmake编译VTK时按照网上教程把OpenGL2改成了OpenGL导致的https://blog.youkuaiyun.com/GreenHandCGL/article/details/82312940,于是重新编译VTK,这次将OpenGL换成OpenGL2,其他步骤不变。
在这里插入图片描述
然后又出现了这个问题:
在这里插入图片描述
这个是没有缺少dll,我将release产生的dll全部放入至C:\Windows\System32中后,问题解决。

我的附加依赖项备份:
vtknetcdf_c+±gd.lib
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_ply_debug.lib
pcl_io_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_ml_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.l

### 配置 Qt Creator 使用 VTK 8.2 要在 Qt Creator 中成功配置并使用 VTK 8.2,需按照以下方式操作: #### 环境准备 确保已安装所需的软件包和库版本。具体来说,需要 VS2017、VTK 8.2 和 Qt 5.14.0 的组合环境[^2]。 #### 编译后的文件理 在完成 Release 版本的编译之后,应将生成的相关动态链接库 (DLL) 文件放置于指定位置以便集成至 Qt Creator。例如,在 `D:\VTK\VTK-release\plugins\designer` 路径下可以找到名为 `QVTKWidgetPlugin.dll` 的插件文件。此 DLL 是实现 QVTKWidget 功能的关键组件之一。 随后,该插件应当被复制到如下目标路径: ```plaintext D:\Qt\Qt5.14.0\Tools\QtCreator\bin\plugins\designer\ ``` 这一过程使得 Qt Creator 可识别并加载自定义控件——即支持可视化编辑器中的 QVTKWidget 显示功能。 #### 设置项目 pro 文件 为了使基于 Qt 的应用程序能够调用 VTK 库的功能模块,则需要修改项目的 `.pro` 文件来包含必要的头文件以及库文件路径设置。以下是典型的配置片段示例: ```makefile QT += widgets core gui opengl INCLUDEPATH += D:/VTK/VTK-build/include/vtk-8.2 \ D:/VTK/VTK-source/Common/Core \ D:/VTK/VTK-source/Rendering/UI LIBS += -LD:/VTK/VTK-build/lib/Release/ \ -lvtkGUISupportQt-8.2 \ -lvtkInteractionStyle-8.2 \ -lvtkRenderingContextOpenGL2-8.2 \ -lvtkRenderingCore-8.2 \ -lvtkCommonExecutionModel-8.2 \ -lvtkFiltersSources-8.2 \ -lQVTKWidgetPlugin ``` 上述代码段中指定了多个 vtk 组件及其对应的 lib 文件名列表;其中 `-L` 参数表示附加搜索目录地址而后面的选项则逐一列举所需连接的具体静态或共享库名称[^1]^[]^。 #### 测试验证 创建一个新的 Qt Widgets Application 工程,并尝试向界面布局添加一个 QVTKWidget 实例以确认整个流程无误运行正常。如果一切顺利的话,应该可以在 Designer 视图里看到新增加的支持项并且可以通过编程接口操控三维图形渲染效果等功能特性。 ```cpp #include "ui_mainwindow.h" #include <vtkSmartPointer.h> #include <vtkSphereSource.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderer.h> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); auto sphereSource = vtkSmartPointer<vtkSphereSource>::New(); sphereSource->Update(); auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(sphereSource->GetOutputPort()); auto actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); auto renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(actor); renderer->SetBackground(.1, .2, .3); // Background color dark blue ui->qvtkWidget->GetRenderWindow()->AddRenderer(renderer); } MainWindow::~MainWindow(){ delete ui; } ``` 以上 C++ 源码展示了如何利用 QVTKWidget 来展示简单的球体模型作为测试案例的一部分.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值