<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.10%2FDevelopers%2FTutorials%2FMigrationGuide%2FVTK6-to-VTK7</id>
	<title>Documentation/4.10/Developers/Tutorials/MigrationGuide/VTK6-to-VTK7 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.10%2FDevelopers%2FTutorials%2FMigrationGuide%2FVTK6-to-VTK7"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/Tutorials/MigrationGuide/VTK6-to-VTK7&amp;action=history"/>
	<updated>2026-04-22T08:52:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/Tutorials/MigrationGuide/VTK6-to-VTK7&amp;diff=59811&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.10</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/Tutorials/MigrationGuide/VTK6-to-VTK7&amp;diff=59811&amp;oldid=prev"/>
		<updated>2018-10-19T00:43:55Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.10&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;__TOC__&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
==Transition from VTK6 to VTK7==&lt;br /&gt;
This section lists categories of code changes necessary to build Slicer with VTK 7.1. Each category has a short description, an example error message, a suggested upgrade path, and references to relevant commits.&lt;br /&gt;
&lt;br /&gt;
Referencing this list might be helpful if Slicer extensions require updates to be compatible with VTK 7.1.&lt;br /&gt;
&lt;br /&gt;
===Deprecated the vtkStreamer class hierarchy===&lt;br /&gt;
&lt;br /&gt;
VTK has deprecated the vtkStreamer class hierarchy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 'VTK_INTEGRATE_FORWARD' : undeclared identifier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace lines like:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;vtkStreamer.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;vtkHyperStreamline.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Slicer/Slicer/commit/a78fa0dc33d7c3822bff14b0e2bc403cf6ee9b31 (COMP: Update #include of deprecated vtkStreamer.h)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/c9f7a5e (vtkStreamer: deprecate the class hierarchy)&lt;br /&gt;
&lt;br /&gt;
===Deprecated vtkMatrix4x4::operator[] method===&lt;br /&gt;
&lt;br /&gt;
VTK has deprecated the &amp;lt;tt&amp;gt;vtkMatrix4x4::operator[]&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 binary '[' : 'vtkMatrix4x4' does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace lines like:&lt;br /&gt;
&lt;br /&gt;
 (*mat)[i][j] = val;&lt;br /&gt;
 val = (*mat)[i][j];&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 mat-&amp;gt;SetElement(i, j, val);&lt;br /&gt;
 val = mat-&amp;gt;GetElement(i, j);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Slicer/Slicer/commit/375e69d37326d6280fea9100ba786267feae46c4 (COMP: Update usage of legacy vtkMatrix4x4 method)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/d9c5ca0 (Mark legacy methods as &amp;quot;legacy&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
===Removed vtksys/ios, vtksys/stl compatibility layers===&lt;br /&gt;
&lt;br /&gt;
VTK has removed the vtksys/ios and vtksys/stl compatibility layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Cannot open include file: 'vtksys/ios/iostream': No such file or directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace lines like:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;vtksys/ios/iostream&amp;gt;&lt;br /&gt;
 #include &amp;lt;vtksys/ios/sstream&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 vtksys_ios::ofstream ofs;&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;lt;sstream&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 std::ofstream ofs;&lt;br /&gt;
&lt;br /&gt;
Replace lines like:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;vtksys/stl/string&amp;gt;&lt;br /&gt;
 #include &amp;lt;vtksys/stl/vector&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 vtksys_stl::string str;&lt;br /&gt;
 vtksys_stl::vector&amp;lt;double&amp;gt; vec;&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;string&amp;gt;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 std::string str;&lt;br /&gt;
 std::vector&amp;lt;double&amp;gt; vec;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
* https://github.com/msmolens/Slicer/commit/55731d6caa7811df346319fdbf6f1d7c6036a31a (COMP: Remove usage of #include &amp;lt;vtksys/stl/*&amp;gt;)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/eaf0f6ac1bc2f65770adf5ff6f17759485cd8072 (ENH: Remove use of include &amp;lt;vtksys/stl/*&amp;gt; and vtksys_stl::*)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/3ae7dd3a106d6b59380e35dfe6962a8c849316c8 (ENH: Remove use of include &amp;lt;vtksys/ios/*&amp;gt; and vtksys_ios::*)&lt;br /&gt;
&lt;br /&gt;
===vtkDataArray refactored===&lt;br /&gt;
&lt;br /&gt;
VTK has refactored the vtkDataArray class hierarchy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 'class XXX’ has no member named ‘SetTupleValue’&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace lines like:&lt;br /&gt;
&lt;br /&gt;
 array-&amp;gt;GetTupleValue(0, val);&lt;br /&gt;
 array-&amp;gt;SetTupleValue(0, val);&lt;br /&gt;
 array-&amp;gt;InsertTupleValue(i, val);&lt;br /&gt;
 array-&amp;gt;InsertNextTupleValue(val);&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 array-&amp;gt;GetTypedTuple(0, val);&lt;br /&gt;
 array-&amp;gt;SetTypedTuple(0, val);&lt;br /&gt;
 array-&amp;gt;InsertTypedTuple(i, val);&lt;br /&gt;
 array-&amp;gt;InsertNextTypedTuple(val);&lt;br /&gt;
&lt;br /&gt;
Replace lines like:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;vtkDataArrayTemplate.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;any reference to &amp;quot;vtkDataArrayTemplate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;vtkAOSDataArrayTemplate.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;reference to &amp;quot;vtkAOSDataArrayTemplate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
* https://github.com/msmolens/Slicer/commit/fedb69d0e622d00c81102461ab13909f96341528 (COMP: Update usage of deprecated vtkDataArrayTemplate)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/06e98d0 (Replace vtkDataArrayTemplate with vtkAoSDataArrayTemplate.)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/893fb6e (Refactor data array APIs.)&lt;br /&gt;
* http://public.kitware.com/pipermail/vtkusers/2016-May/095388.html ([vtkusers] Wiki examples fail to build due to no InsertNextTypedTuple)&lt;br /&gt;
* https://github.com/Kitware/VTK/blob/master/Documentation/Doxygen/ChangesVTK-7-1.md#vtkdataarray-refactor-vtkarraydispatch-and-related-tools&lt;br /&gt;
&lt;br /&gt;
===Deprecated pipeline update methods===&lt;br /&gt;
&lt;br /&gt;
VTK has deprecated and replaced certain pipeline update methods.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 'class XXX’ has no member named ‘SetUpdateExtent’&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow suggestions in VTK changelog: https://github.com/Kitware/VTK/blob/master/Documentation/Doxygen/ChangesVTK-7-1.md#pipeline-update-methods&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/msmolens/Slicer/commit/f1b93c432dd9ab3f93987c656e3947b90a7cdb45 (COMP: Update usage of deprecated SetUpdateExtent methods)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/f020ebb&lt;br /&gt;
&lt;br /&gt;
===Updated Python wrapping===&lt;br /&gt;
&lt;br /&gt;
VTK has updated its Python wrapping to support Python 3 and to wrap more code by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Symptoms:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile or link error while building a Python-wrapped class or library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;CMakeLists.txt&amp;lt;/tt&amp;gt;, add the &amp;lt;tt&amp;gt;WRAP_EXCLUDE_PYTHON&amp;lt;/tt&amp;gt; property anywhere that the &amp;lt;tt&amp;gt;WRAP_EXCLUDE&amp;lt;/tt&amp;gt; property is defined on source files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace lines of code like:&lt;br /&gt;
&lt;br /&gt;
 //BTX&lt;br /&gt;
 ...&lt;br /&gt;
 //ETX&lt;br /&gt;
&lt;br /&gt;
with:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __VTK_WRAP__&lt;br /&gt;
 ...&lt;br /&gt;
 #endif // __VTK_WRAP__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/msmolens/Slicer/commit/10a69c987dcdd4abdbaa74afad22f4af3c16b417 (COMP: Update usage of WRAP_EXCLUDE for Python)&lt;br /&gt;
* https://github.com/msmolens/Slicer/commit/d5ca934951cf411c2a4b9b56de533a07e265dcaf (COMP: Update excluding singleton intializers for wrapping)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/e6f75b9 (Wrap many more classes with python.)&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/55878a2 (Manual search &amp;amp; destroy of (B|E)TX)&lt;br /&gt;
* http://www.vtk.org/Wiki/VTK/Python_Wrapper_Enhancement&lt;br /&gt;
* http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ&lt;br /&gt;
&lt;br /&gt;
===vtkMTimeType===&lt;br /&gt;
&lt;br /&gt;
VTK introduced a specific type—&amp;lt;tt&amp;gt;vtkMTimeType&amp;lt;/tt&amp;gt;—to be used for &amp;lt;tt&amp;gt;vtkObject&amp;lt;/tt&amp;gt; modified time (MTime).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 vtkDiffusionTensorGlyph::GetMTime': overriding virtual function return type differs and is not covariant from 'vtkObject::GetMTime'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update code that uses &amp;lt;tt&amp;gt;unsigned long&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;unsigned long int&amp;lt;/tt&amp;gt; for modified times to use &amp;lt;tt&amp;gt;vtkMTimeType&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitlab.kitware.com/vtk/vtk/merge_requests/1790&lt;br /&gt;
&lt;br /&gt;
===vtkStandardNewMacro expects vtkObjectFactory.h===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Error message similar to:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  expected constructor, destructor, or type conversion before ‘;’ token&lt;br /&gt;
    vtkStandardNewMacro(vtkSlicerModelClipLogic);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;vtkObjectFactory.h&amp;gt;&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>