From Slicer Wiki
Jump to: navigation, search
Home < Documentation < 4.2 < Developers < Tutorials < PortingCLIToITKv4


Links to ITKv4 Links to Migration guide

Known issues in porting CLIs

My filter doesn't run.

The API to ThreadedGenerateData() changed in ITKv4 (use of a defined type ThreadIdType). This can result in your implementation of ThreadedGenerateData() defining a new function instead of overriding the version called by the pipeline. ITKv4 attempts to emit a run-time exception but there are circumstances where the exception cannot be thrown (for instance, if the superclass already provided a valid version of ThreadedGenerateData()). If your filter is not executing in ITKv4, check the declaration of ThreadedGenerateData().

ITKv3 version of ThreadedGenerateData()

     virtual  void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,  int threadId );

ITKv4 version of ThreadedGenerateData()

    virtual  void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId);


ITKv4 updated the version of GDM used to version 2. GDCM version 2 has many API changes from version 1. If your CLI used GDCM directly, you will need to port your CLI to ITKv4. If you used ITK abstractions to access DICOM, then the changes to GDCM will not affect your CLI.