C++ 未定义引用

C++ 未定义引用,c++,ubuntu,linker,linker-errors,vtk,C++,Ubuntu,Linker,Linker Errors,Vtk,我按照建议安装了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

我按照建议安装了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;
}
但是,我不断遇到以下错误:

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

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

您的假设是正确的,linker命令缺少所需的VTK库。有关更多详细信息,请查看以下链接

比如说

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


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

我认为可能是链接?是的,您似乎没有链接到vtk库。话虽如此,还是让CMake为基于VTK的项目生成MakeFile为好。我认为使用CMake会让事情变得更简单,因为编写所有库都相当麻烦(特别是因为它们是由版本附加的)。谢谢
/usr/local/include/vtk-7.1/vtkSmartPointer.h:29: error: undefined reference to `vtkSmartPointerBase::~vtkSmartPointerBase()'