Hi Matt, thanks for the reply.
All these files are in the same directory (main.cxx TrainingFilter.cxx
TrainingFilter.h CmakeLists.txt)
My CMakeLists code is here:
PROJECT (Training)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE (ITK REQUIRED)
INCLUDE (${ITK_USE_FILE})
ADD_EXECUTABLE ( TrainingFilter main.cxx )
TARGET_LINK_LIBRARIES( TrainingFilter ${ITK_LIBRARIES})
Il 23/01/2014 20:13, Matt McCormick ha scritto:
Hi Alessio,
It looks like your making good progress.
The next step is to inherit from ProcessObject instead of Object to
get the filter pipeline functionality (which may be important
depending on the application).
Regarding the linking error, what does the CMakeLists.txt look like?
Is the file TrainingFilter.cxx (where itk::TrainingFilter::Update() is
defined) built into the executable?
Thanks,
Matt
On Thu, Jan 23, 2014 at 11:56 AM, Alessio Mazzarini
<[email protected]> wrote:
Hi all. I'm trying to create a very simple filter with no inputs and outputs
and templates but when i make it, compilers gives me some errors and i don't
understand how to fix them.
this is my header file of the filter:
****************TrainingFilter.h******************
#ifndef __TrainingFilter_h
#define __TrainingFilter_h
#include "itkObject.h"
#include "itkImage.h"
namespace itk
{
class TrainingFilter :
public Object
{
public:
/** Standard class typedefs. */
typedef TrainingFilter Self;
typedef Object Superclass;
typedef SmartPointer < Self > Pointer;
typedef SmartPointer < const Self > ConstPointer;
itkNewMacro (Self);
itkTypeMacro(TrainingFilter, Object);
void Update(); //Method of the filter
protected:
TrainingFilter();
~TrainingFilter();
private:
TrainingFilter(const Self &); //purposely not implemented
void operator=(const Self &); //purposely not implemented
};
}
#endif
This is its implementation:
*******************TrainingFilter.cxx*************
#include "TrainingFilter.h"
#include "itkObject.h"
#include <iostream>
namespace itk
{
TrainingFilter::TrainingFilter() { };
TrainingFilter::~TrainingFilter() { };
void TrainingFilter::Update()
{
std::cout<<"**Filter called .cxx **"<<std::endl;
}
} // end namespace
and this is my main, where i try, as usual, to create a FilterType and a
smartpointer to call the Update method.
***********main.cxx*****************
#include "TrainingFilter.h"
#include <iostream>
using namespace std;
int main(int argc, char * argv [])
{
typedef itk::TrainingFilter FilterTypeTraining;
FilterTypeTraining::Pointer filterTraining = FilterTypeTraining::New();
try
{
filterTraining-> Update();
}
catch( itk::ExceptionObject & excp )
{
std::cerr << "Exception caught !" << std::endl;
std::cerr << excp << std::endl;
}
return 0;
}
This is the compiler error:
CMakeFiles/TrainingFilter.dir/main.cxx.o: In function `main':
main.cxx:(.text+0x2c): undefined reference to
`itk::TrainingFilter::Update()'
CMakeFiles/TrainingFilter.dir/main.cxx.o: In function
`itk::TrainingFilter::New()':
main.cxx:(.text._ZN3itk14TrainingFilter3NewEv[itk::TrainingFilter::New()]+0x42):
undefined reference to `itk::TrainingFilter::TrainingFilter()'
CMakeFiles/TrainingFilter.dir/main.cxx.o: In function
`itk::ObjectFactory<itk::TrainingFilter>::Create()':
main.cxx:(.text._ZN3itk13ObjectFactoryINS_14TrainingFilterEE6CreateEv[itk::ObjectFactory<itk::TrainingFilter>::Create()]+0xe):
undefined reference to `typeinfo for itk::TrainingFilter'
main.cxx:(.text._ZN3itk13ObjectFactoryINS_14TrainingFilterEE6CreateEv[itk::ObjectFactory<itk::TrainingFilter>::Create()]+0x47):
undefined reference to `typeinfo for itk::TrainingFilter'
collect2: ld returned 1 exit status
make[2]: *** [TrainingFilter] Error 1
make[1]: *** [CMakeFiles/TrainingFilter.dir/all] Error 2
make: *** [all] Error 2
Thanks for your help,
Alessio
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
_______________________________________________
Community mailing list
[email protected]
http://public.kitware.com/cgi-bin/mailman/listinfo/community
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-developers