VTK 未定义的引用

VTK Undefined Reference

本文关键字:引用 未定义 VTK      更新时间:2023-10-16

我按照此处的建议安装了VTK 7.1.1。

我正在使用以下代码处理一个新项目:

#include <iostream>
#include <vtk-7.1/vtkImageData.h>
#include <vtk-7.1/vtkMetaImageReader.h>
#include <vtk-7.1/vtkSmartPointer.h>
#include <vtk-7.1/vtkRenderer.h>
#include <vtk-7.1/vtkImageActor.h>
#include <vtk-7.1/vtkImageMapper3D.h>
#include <vtk-7.1/vtkRenderWindow.h>
#include <vtk-7.1/vtkRenderWindowInteractor.h>
int main()
{
    vtkSmartPointer<vtkMetaImageReader> reader =  vtkSmartPointer<vtkMetaImageReader>::New();
    reader->SetFileName("Test.mhd");
    reader->Update();
    std::cout<<"Hello World";
    return 0;
}

我正在使用以下内容进行编译:

g++ -g -Wall -I /usr/local/include -L /usr/local/lib -o main main.cpp

但是,我不断收到如下错误:

/usr/local/include/vtk-7.1/vtkSmartPointer.h:29: error: undefined reference to `vtkSmartPointerBase::~vtkSmartPointerBase()'

知道为什么吗?我认为这可能是链接?

您的假设是正确的,链接器命令缺少所需的 VTK 库。查看以下链接,了解 Makefiles 中的 VTK 更多详细信息。

例如

g++ -g -Wall -I /usr/local/include -L/usr/local/lib -lvtkCommon -lvtkFiltering -lvtkImaging -lvtkGraphics -lvtkGenericFiltering -lvtkIO -lvtkRendering -lvtkVolumeRendering

为了简化构建 VTK 应用程序的过程,您可以使用 CMake