[vtkusers] unresolved external
Mathieu Malaterre
mathieu.malaterre at kitware.com
Fri Mar 5 14:03:18 EST 2004
Radim,
You need to build the vtkHybrid library. Turn VTK_USE_HYBRID to ON in
cmake. Then don't forget to link your app against vtkHybrid.dll
HTH
Mathieu
Radim Kolář wrote:
> Please help me with this:
> I get these error messages, when I'm linking application under Borland.
>
> [Linker Error] Unresolved external
> 'vtkThinPlateSplineTransform::New()' referenced from C:\PROGRAM
> FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> [Linker Error] Unresolved external
> 'vtkThinPlateSplineTransform::SetSourceLandmarks(vtkPoints *)'
> referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> [Linker Error] Unresolved external
> 'vtkThinPlateSplineTransform::SetTargetLandmarks(vtkPoints *)'
> referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> [Linker Error] Unresolved external
> 'vtkThinPlateSplineTransform::SetBasis(int)' referenced from C:\PROGRAM
> FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> [Linker Error] Unresolved external 'vtkTransformToGrid::New()'
> referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> [Linker Error] Unresolved external 'vtkGridTransform::New()'
> referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> [Linker Error] Unresolved external
> 'vtkGridTransform::SetInterpolationMode(int)' referenced from C:\PROGRAM
> FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ
> Where is the problem please?
> Thanks, Radim
>
> Here is my simple code:
>
> //---------------------------------------------------------------------------
> #include "vtkPolyData.h"
> #include "vtkTransform.h"
> #include "vtkTransformPolyDataFilter.h"
> #include "vtkWarpScalar.h"
> #include "vtkBMPReader.h"
> #include "vtkImageReslice.h"
> #include "vtkGridTransform.h"
> #include "vtkTransformToGrid.h"
> #include "vtkThinPlateSplineTransform.h"
> #include "vtkPoints.h"
> #include "vtkImageBlend.h"
> #include "vtkImageMapToColors.h"
> #include "vtkLookupTable.h"
> #include "vtkImageGridSource.h"
> #include "vtkImageViewer.h"
>
> #include <stdio.h>
> #include <vcl.h>
> #pragma hdrstop
>
> //---------------------------------------------------------------------------
>
> #pragma argsused
> int main(int argc, char* argv[])
> {
> //# first, create an image to warp
> vtkImageGridSource *imageGrid = vtkImageGridSource::New();
> imageGrid->SetGridSpacing( 16, 16, 0);
> imageGrid->SetGridOrigin( 0, 0, 0 );
> imageGrid->SetDataExtent( 0, 255, 0, 255, 0, 0);
> imageGrid->SetDataScalarTypeToUnsignedChar();
>
> vtkLookupTable *table = vtkLookupTable::New();
> table->SetTableRange( 0, 1 );
> table->SetValueRange( 1.0, 0.0);
> table->SetSaturationRange( 0.0, 0.0);
> table->SetHueRange( 0.0, 0.0 );
> table->SetAlphaRange( 0.0, 1.0 );
> table->Build();
>
> vtkImageMapToColors *alpha = vtkImageMapToColors::New();
> alpha->SetInput( imageGrid->GetOutput() );
> alpha->SetLookupTable( table );
>
> vtkBMPReader *reader1 = vtkBMPReader::New();
> reader1->SetFileName(
> "c:/Data/Retina/3D/105939/L/105939l000.bmp" );
>
> vtkImageBlend *blend = vtkImageBlend::New();
> blend->SetInput( 0, reader1->GetOutput() );
> blend->SetInput( 1, alpha->GetOutput() );
>
> //# next, create a ThinPlateSpline transform
>
> vtkPoints *p1=vtkPoints::New();
> p1->SetNumberOfPoints( 8 );
> p1->SetPoint( 0, 0, 0, 0 );
> p1->SetPoint( 1, 0, 255, 0);
> p1->SetPoint( 2, 255, 0, 0 );
> p1->SetPoint( 3, 255, 255, 0 );
> p1->SetPoint( 4, 96, 96, 0 );
> p1->SetPoint( 5, 96, 159, 0 );
> p1->SetPoint( 6, 159, 159, 0 );
> p1->SetPoint( 7, 159, 96, 0 );
>
> vtkPoints *p2=vtkPoints::New();
> p2->SetNumberOfPoints( 8 );
> p2->SetPoint( 0, 0, 0, 0 );
> p2->SetPoint( 1, 0, 255, 0);
> p2->SetPoint( 2, 255, 0, 0 );
> p2->SetPoint( 3, 255, 255, 0 );
> p2->SetPoint( 7, 96, 96, 0 );
> p2->SetPoint( 5, 96, 159, 0 );
> p2->SetPoint( 5, 159, 159, 0 );
> p2->SetPoint( 6, 159, 96, 0 );
>
>
> vtkThinPlateSplineTransform *thinPlate =
> vtkThinPlateSplineTransform::New();
> thinPlate->SetSourceLandmarks( p2 );
> thinPlate->SetTargetLandmarks( p1 );
> thinPlate->SetBasisToR2LogR();
>
> //# convert the thin plate spline into a grid
>
> vtkTransformToGrid *transformToGrid = vtkTransformToGrid::New();
> transformToGrid->SetInput( thinPlate );
> transformToGrid->SetGridSpacing( 16, 16, 1 );
> transformToGrid->SetGridOrigin( -0.5, -0.5, 0 );
> transformToGrid->SetGridExtent(0, 16, 0, 16, 0, 0);
>
> vtkGridTransform *transform = vtkGridTransform::New();
> transform->SetDisplacementGrid(
> transformToGrid->GetOutput() );
> transform->SetInterpolationModeToCubic();
>
> //# you must invert the transform before passing it to
> vtkImageReslice
> transform->Inverse();
>
> //# apply the grid warp to the image
>
> vtkImageReslice *reslice = vtkImageReslice::New();
> reslice->SetInput( blend->GetOutput() );
> reslice->SetResliceTransform( transform );
> reslice->SetInterpolationModeToLinear();
>
> //# set the window/level to 255.0/127.5 to view full range
> vtkImageViewer *viewer = vtkImageViewer::New();
> viewer->SetInput( reslice->GetOutput() );
> viewer->SetColorWindow( 255.0 );
> viewer->SetColorLevel( 127.5 );
> viewer->SetZSlice( 0 );
> viewer->Render();
> getchar();
>
>
> return 0;
> }
> //---------------------------------------------------------------------------
>
>
> ======================================================
> Department of Biomedical Engineering
> Faculty of Electrical Engineering and Communication
> Brno University of Technology
> Purkynova 118
> 61200 Brno, Czech Republic
> tel: 541 149 551
> fax: 541 149 542
> mail: kolarr at feec.vutbr.cz <mailto:kolarr at feec.vutbr.cz>
> Visit BIOSIGNAL 2004 web site: http://www.feec.vutbr.cz/UBMI/bs2004.html
> ======================================================
More information about the vtkusers
mailing list