Documentation/Nightly/Developers/Tutorials/MigrationGuide/VTK8-to-VTK9
From Slicer Wiki
Home < Documentation < Nightly < Developers < Tutorials < MigrationGuide < VTK8-to-VTK9
Transition from VTK 8.0 to VTK 9.0
This section lists categories of code changes necessary to build Slicer with VTK 9.0. Each category has a short description, an example error message, a suggested upgrade path, and references to relevant commits.
VTK9: Use const vtkIdType*
To fix error messages similar to:
/tmp/SPHARM-PDM/Modules/CLI/MetaMeshTools/vtkPolyDataToitkMesh.cxx:82:70: error: invalid initialization of non-const reference of type ‘const vtkIdType*& {aka const long long int*&}’ from an rvalue of type ‘const vtkIdType* {aka const long long int*}’ while( triangleStrips->GetNextCell( numberOfCellPoints, cellPoints ) ) ^ [...] /path/to/Slicer-Release/VTK/Common/DataModel/vtkCellArray.h:1497:12: note: initializing argument 2 of ‘int vtkCellArray::GetNextCell(vtkIdType&, const vtkIdType*&)’ inline int vtkCellArray::GetNextCell(vtkIdType& npts, vtkIdType const*& pts) VTK_SIZEHINT(pts, npts) ^ /tmp/SPHARM-PDM/Modules/CLI/MetaMeshTools/vtkPolyDataToitkMesh.cxx:91:64: error: invalid initialization of non-const reference of type ‘const vtkIdType*& {aka const long long int*&}’ from an rvalue of type ‘const vtkIdType* {aka const long long int*}’ while( polygons->GetNextCell( numberOfCellPoints, cellPoints ) ) ^ ^
Replace code like this:
vtkIdType* cellPoints;
By this:
#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) const vtkIdType* cellPoints; #else vtkIdType* cellPoints; #endif
References:
VTK9: Add missing std namespace identifier
To fix error messages similar to:
/usr/include/c++/5/iosfwd:162:34: note: ‘std::ifstream’ /tmp/SPHARM-PDM/Modules/CLI/MetaMeshTools/MeshMath.cxx:4082:5: error: ‘ofstream’ was not declared in this scope ofstream output; ^
/usr/include/c++/5/iosfwd:162:34: note: ‘std::ifstream’ /tmp/SPHARM-PDM/Modules/CLI/MetaMeshTools/MeshMath.cxx:4117:5: error: ‘ofstream’ was not declared in this scope ofstream output; ^
Replace code like this:
ifstream input; ofstream output;
By this:
std::ifstream input; std::ofstream output;
References: