vtk链接QT库出错

Ubuntu下自己编译了QVTKWidget,在使用的过程中报错

错误信息:
: error while loading shared libraries: libQt5X11Extras.so.5: cannot open shared object file: No such file or directory

或显示如下错误:

问题原因:

我们将QT安装到了opt目录下面,导致在系统目录下找不到对应的QT库文件

解决方式一

第一步:修改cmakelists.txt文件,指定QT目录为我们安装的QT目录

在find_package之前添加QT的cmake路径
set(CMAKE_PREFIX_PATH “/home/ueg-pc1/Qt5.12.5/gcc_64/lib/cmake”)
find_package (Qt5 COMPONENTS Core Widgets REQUIRED)

或在qt界面上配置:CMAKE_PREFIX_PATH     /home/ueg-pc1/Qt5.12.5/gcc_64/lib/cmake

第二步:清除CMake在build目录下面的缓存文件,清空build目录即可一定要做这一步

第三步:运行报错后,将QT库目录添加到LD_LIBRARY_PATH中,运行成功

设置环境变量

cmd:   sudo gedit ~/.bashrc

//****************在bashrc文件末尾添加

export QTDIR=/home/ueg-pc1/Qt5.12.5/5.12.5/gcc_64
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

//****************end

cmd:   source  ~/.bashrc

尝试的其它无效的方法,在此记录一下,主要是设置环境变量:

cmd:sudo gedit /etc/profile

//****************在文件末尾添加

export PATH=/home/ueg-pc1/Qt5.12.5/Tools/QtCreator/bin:$PATH
export QTDIR=/home/ueg-pc1/Qt5.12.5/5.12.5/gcc_64
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

//****************end

cmd: source /etc/profile

 

cmd :sudo gedit /etc/ld.so.conf

cmd:sudo ldconfig

此部分只需要设置红色部分,其它颜色不用设置。

第四,此时可以在终端运行程序,可以找到链接库,但是在qt界面上的编译运行,仍然存在找不到库的问题。

在终端运行:正常

cmake untitled2

make

./untitled22

第五,在qt运行出现问题设置,手动添加LD_LIBRARY_PATH环境变量/home/ueg-pc1/Qt5.12.5/5.12.5/gcc_64/lib,系统添加了,但是qt上run没有添加,这就是问题所在。

CMAKE:

cmake_minimum_required(VERSION 3.10)
project(VTKTest)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_PREFIX_PATH "/home/ueg-pc1/Qt5.12.5/5.12.5/gcc_64/lib/cmake")
find_package (Qt5 COMPONENTS Core Widgets REQUIRED)
FIND_PACKAGE(VTK REQUIRED)
IF (VTK_FOUND)
    MESSAGE(STATUS "VTK found.")
    INCLUDE(${VTK_USE_FILE})
ENDIF()


IF(Qt5_FOUND)
    MESSAGE(STATUS "Qt5 found.")
ENDIF()

add_executable(VTKTest main.cpp)
target_link_libraries(VTKTest
    ${VTK_LIBRARIES})

SOURCE:

#include <iostream>
//VTK includes
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>

#include <QVTKOpenGLWidget.h>
#include <QApplication>
#include <QVBoxLayout>
#include <QSurfaceFormat>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
        QWidget w;// = new QWidget(0);
        QVBoxLayout layout;// = new QVBoxLayout(0);
        QVTKOpenGLWidget v;// = new QVTKOpenGLWidget();
        v.setFixedSize(300, 300);
        layout.addWidget(&v);
        w.setLayout(&layout);

        auto cylinder = vtkSmartPointer<vtkCylinderSource>::New();
        cylinder->SetHeight(3.0);
        cylinder->SetRadius(1.0);
        cylinder->SetResolution(10);
        auto cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
        cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
        auto cylinderActor = vtkSmartPointer<vtkActor>::New();
        cylinderActor->SetMapper(cylinderMapper);
        auto renderer = vtkSmartPointer<vtkRenderer>::New();
        renderer->AddActor(cylinderActor);
        renderer->SetBackground(0.1, 0.2, 0.4);
        auto renWin = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
        renWin->AddRenderer(renderer);

        v.SetRenderWindow(renWin);
        w.show();
    return a.exec();
}

 测试后发现,第一步的环境变量可以不设置。

参考资料:

https://blog.csdn.net/qq_29022265/article/details/93746142

VTKwidget

https://www.jianshu.com/p/c9d1c623878f

医学图形:

https://blog.csdn.net/webzhuce/article/details/75208738

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VTK是Visualization Toolkit的缩写,是一个开源的图形处理工具,用于创建、处理和渲染三维图形。它提供了丰富的功能,可以用于各种应用程序,包括科学可视化、医学图像处理、机器人学等。 Qt是一种跨平台的应用程序开发框架,具有丰富的GUI(图形用户界面)组件和工具,可以用于创建各种类型的应用程序。它提供了直观、交互式的界面设计工具,使开发人员能够轻松地创建用户友好的应用程序。 DICOM是医学图像和通信标准的缩写,它是医学领域的一种通用文件格式和协议,用于存储、传输和共享医学图像和相关信息。DICOM文件通常包含来自医学成像设备(如CT扫描、MRI、X射线等)的图像数据及其相关的患者信息、检查参数等。 VTKQt和DICOM常常一起使用,用于开发医学图像处理和分析的应用程序。通过使用VTKQt,开发人员可以轻松地创建具有丰富可视化效果的医学图像应用程序,并提供直观、智能化的界面。VTK提供了丰富的图形处理和可视化工具,可以对DICOM图像进行处理、分析和可视化。而Qt的GUI组件和界面设计工具使开发人员能够创建用户友好的应用程序界面,方便用户查看、编辑和分析DICOM图像。 总的来说,VTKQt和DICOM的结合为医学图像处理和分析应用程序的开发提供了强大的工具和功能。它们的使用可以加快开发过程,提高应用程序的效率和用户友好性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值