2017-05-09 21 views
0

のVisual Studio 2013年にQt5.7とし、ITK 4.5でVTK 7.0と私のコードをビルドするには、私は下のエラーが表示されます。VTK/ITK/QT - 未解決の外部シンボルエラー(LNK2001)

エラーLNK2001 :未解決の外部シンボルは、 "protected:vtkVRMLSource2 __cdecl仮想空間を:: SetNthOutput(int型、クラスvtkDataObject *)"(SetNthOutput @ vtkVRMLSource2 @@ MEAAXHPEAVvtkDataObject @@@ Z?)

は、このファイルに対応するコードは(これです`vtkVRMLSource2.cxx``):

#include "vtkVRML.h" 
#include "vtkVRMLSource2.h" 
#include "vtkVRMLImporter.h" 
#include "vtkObjectFactory.h" 
#include "vtkPolyData.h" 
#include "vtkProperty.h" 
#include "vtkActorCollection.h" 
#include "vtkActor.h" 
#include "vtkPointData.h" 
#include "vtkCellData.h" 
#include "vtkPolyDataMapper.h" 
#include "vtkRenderer.h" 
#include "vtkTransformPolyDataFilter.h" 
#include "vtkAppendPolyData.h" 
#include "vtkTransform.h" 
#include "vtkUnsignedCharArray.h" 
#include "vtkSmartPointer.h" 
#include "vtkFloatArray.h" 
#include "vtkDataObject.h" 
#include <stdio.h> 
#include <iostream> 
..... 
idx = 0; 
while ((actor = actors->GetNextActor())) 
{ 
mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); 
if (mapper) 
    { 
    //mapper->GetInput()->Update(); 
    //vtkPolyData *newOutput = vtkPolyData::New(); 
    vtkPolyData *newOutput = mapper->GetInput(); 
    //newOutput->CopyInformation(mapper->GetInput()); 
    this->SetNthOutput(idx, newOutput); 
    ++idx; 
    newOutput->Delete(); 
    newOutput = NULL; 
    } 
} 

そしてvtkVRMLSource2.hファイルがある:私は、VSのすべての適切なVTK、ITKとQtライブラリをリンクしている

#include "vtkAlgorithm.h" 
#include "vtkDataObject.h" 
class vtkVRMLSource2 : public vtkAlgorithm{ 

public: 
int vtkTypeRevisionMacro(vtkVRMLSource2, vtkAlgorithm); 
void PrintSelf(ostream& os, vtkIndent indent); 
static vtkVRMLSource2 *New(); 
int NumberOfOutputs; 

vtkSetStringMacro(FileName) 
vtkGetStringMacro(FileName) 

int GetNumberOfOutputs(); 
vtkPolyData* GetOutput(int idx); 
vtkPolyData* GetOutput() { return this->GetOutput(0);} 

vtkSetMacro(Color,int) // usage example: this->SetColor(1); 
vtkGetMacro(Color,int) 
vtkBooleanMacro(Color,int) 

vtkSetMacro(Append,int) // usage example: this->SetAppend(1); 
vtkGetMacro(Append,int) 
vtkBooleanMacro(Append,int) 

protected: 
vtkVRMLSource2(); 
~vtkVRMLSource2(); 

void Execute(); 
void InitializeImporter(); 
void CopyImporterToOutputs(); 

char* FileName; 
vtkVRMLImporter *Importer; 
int Color; 
int Append; 

virtual void SetNthOutput(int num, vtkDataObject *output); 
private: 
    vtkVRMLSource2(const vtkVRMLSource2&); 
    void operator=(const vtkVRMLSource2&); 
}; 

私を助けてもらえますか?

+3

[この](https://www.visitusers.org/index.php?title=VTK_6.0_Upgrade)によると、あなたは変更する必要が ' this-> SetNthOutput(idx、newOutput) 'を' this-> GetExecutive() - > SetOutputData(idx、newOutput) 'に設定すると、 – putu

答えて

0

ヘッダーファイルで宣言したvoid SetNthOutput(int num, vtkDataObject *output)の定義を指定する必要があります。あなたがvtkVRMLSource2.cxxにこれを追加することによってそれを行うことができます:

void vtkVRMLSource2::SetNthOutput(int num, vtkDataObject *output) 
{ 
    //code goes here 
} 
関連する問題