C++ 未定义引用
我按照建议安装了VTK 7.1.1 我正在使用以下代码进行一个新项目: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
#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()'