2017-12-28 65 views
0

VTK 7.1.1をhereとしてインストールしました。VTK未定義参照

私は次のコードで新しいプロジェクトに取り組んでいる:私はコンパイルするには、以下の使用しています

#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()' 

なぜですか?多分それはリンクかもしれないと思いますか?

+0

を使用することができ、あなたのVTKアプリケーションを構築容易にするために***私はそれは多分リンクかもしれないと思う?***はい、あなたがいないようですvtkライブラリにリンクすること。それでは、CMakeにVTKベースのプロジェクト用のMakeFileを生成させる方が良いと言いました。 – drescherjm

答えて

0

あなたの前提は正しいことです。リンカーコマンドに必要なVTKライブラリがありません。詳細はVTK in Makefilesの次のリンクをご覧ください。

例えば

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

あなたはCMakeの

+0

私は、CMakeを使うと、すべてのライブラリを書くのはかなり面倒なので(特にバージョンに追加されているので)、もっと簡単になると思います。ありがとう! – user3126802