[vtkusers] sorry for formating, plain version is here:
Andrew A
scratchboom at gmail.com
Sat Sep 4 18:35:29 EDT 2010
I try to compile a vtk example from here
(http://www.vtk.org/Wiki/VTK/Examples/Cxx/ImageData/IterateImageData)
ImageData.cpp:
#include <vtkSmartPointer.h>
#include <vtkImageData.h>
int main(int, char *[]) {
// Create an image data
vtkSmartPointer <vtkImageData> imageData =
vtkSmartPointer<vtkImageData>::New();
// Specify the size of the image data
imageData->SetDimensions(2, 3, 1);
imageData->SetNumberOfScalarComponents(1);
imageData->SetScalarTypeToDouble();
int* dims = imageData->GetDimensions();
// int dims[3]; // can't do this
std::cout << "Dims: " << " x: " << dims[0] << " y: " << dims[1] << " z: "
<< dims[2] << std::endl;
std::cout << "Number of points: " << imageData->GetNumberOfPoints()
<< std::endl;
std::cout << "Number of cells: " << imageData->GetNumberOfCells()
<< std::endl;
//fill every entry of the image data with "2.0"
for (int z = 0; z < dims[2]; z++) {
for (int y = 0; y < dims[1]; y++) {
for (int x = 0; x < dims[0]; x++) {
double* pixel =
static_cast<double*> (imageData->GetScalarPointer(x, y,
z));
pixel[0] = 2.0;
}
}
}
//retrieve the entries from the image data and print them to the screen
for (int z = 0; z < dims[2]; z++) {
for (int y = 0; y < dims[1]; y++) {
for (int x = 0; x < dims[0]; x++) {
double* pixel =
static_cast<double*> (imageData->GetScalarPointer(x, y,
z));
// do something with v
std::cout << pixel[0] << " ";
}
std::cout << std::endl;
}
std::cout << std::endl;
}
return 0;
}
I compile it with command line:
g++ -Wno-deprecated
-I/home/megauser/libs/vtk-installed/include/vtk-5.6/
-L/home/megauser/libs/vtk-installed/lib/vtk-5.6/ -lvtkHybrid
ImageData.cpp
But I get this compilation errors:
/tmp/ccVO1Ty2.o: In function `main':
VtkImageDataWriter.cpp:(.text+0x6b): undefined reference to
`vtkImageData::SetNumberOfScalarComponents(int)'
/tmp/ccVO1Ty2.o: In function `vtkImageData::SetScalarTypeToDouble()':
VtkImageDataWriter.cpp:(.text._ZN12vtkImageData21SetScalarTypeToDoubleEv[vtkImageData::SetScalarTypeToDouble()]+0x15):
undefined reference to `vtkImageData::SetScalarType(int)'
/tmp/ccVO1Ty2.o: In function
`vtkSmartPointer<vtkImageData>::~vtkSmartPointer()':
VtkImageDataWriter.cpp:(.text._ZN15vtkSmartPointerI12vtkImageDataED1Ev[vtkSmartPointer<vtkImageData>::~vtkSmartPointer()]+0xd):
undefined reference to `vtkSmartPointerBase::~vtkSmartPointerBase()'
/tmp/ccVO1Ty2.o: In function `vtkSmartPointer<vtkImageData>::New()':
VtkImageDataWriter.cpp:(.text._ZN15vtkSmartPointerI12vtkImageDataE3NewEv[vtkSmartPointer<vtkImageData>::New()]+0xe):
undefined reference to `vtkImageData::New()'
/tmp/ccVO1Ty2.o: In function
`vtkSmartPointer<vtkImageData>::vtkSmartPointer(vtkImageData*,
vtkSmartPointerBase::NoReference const&)':
VtkImageDataWriter.cpp:(.text._ZN15vtkSmartPointerI12vtkImageDataEC1EPS0_RKN19vtkSmartPointerBase11NoReferenceE[vtkSmartPointer<vtkImageData>::vtkSmartPointer(vtkImageData*,
vtkSmartPointerBase::NoReference const&)]+0x1b): undefined reference
to `vtkSmartPointerBase::vtkSmartPointerBase(vtkObjectBase*,
vtkSmartPointerBase::NoReference const&)'
collect2: ld returned 1 exit status
How to build this example properly?
Thanks!
More information about the vtkusers
mailing list