# Mingw compile error for vtkm

**URL:** https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265
**Category:** Support
**Created:** [November 24, 2021, 12:59pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265 "2021-11-24T12:59:34Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![rockydut](https://discourse.vtk.org/user_avatar/discourse.vtk.org/rockydut/32/4261_2.png) [@rockydut](https://discourse.vtk.org/u/rockydut)
#### Post date: [November 24, 2021, 12:59pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/1 "2021-11-24T12:59:34Z")

</div>

Dear all. I compile the VTK with vtkm. I got the following compile errors. How to compile it correct with vtkm?

D:/Msys64/mingw64/bin/…/lib/gcc/x86\_64-w64-mingw32/11.2.0/…/…/…/…/x86\_64-w64-mingw32/bin/ld.exe: CMakeFiles\AcceleratorsVTKmFilters.dir/objects.a(vtkmGradient.cxx.obj):vtkmGradient.c:(.text$\_ZN4vtkm6filter11FilterFieldINS0\_8GradientEE19PrepareForExecutionINS0\_13PolicyDefaultEEENS\_4cont7DataSetERKS7\_RKNS6\_5FieldENS0\_10PolicyBaseIT\_EE[\_ZN4vtkm6filter11FilterFieldINS0\_8GradientEE19PrepareForExecutionINS0\_13PolicyDefaultEEENS\_4cont7DataSetERKS7\_RKNS6\_5FieldENS0\_10PolicyBaseIT\_EE]+0x408): undefined reference to `vtkm::cont::DataSet vtkm::filter::Gradient::DoExecute<vtkm::Vec<double, 3>, vtkm::cont::StorageTagSOA, vtkm::filter::PolicyDefault>(vtkm::cont::DataSet const&, vtkm::cont::ArrayHandle<vtkm::Vec<double, 3>, vtkm::cont::StorageTagSOA> const&, vtkm::filter::FieldMetadata const&, vtkm::filter::PolicyBase<vtkm::filter::PolicyDefault>)' D:/Msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\AcceleratorsVTKmFilters.dir/objects.a(vtkmGradient.cxx.obj):vtkmGradient.c:(.text$_ZN4vtkm6filter11FilterFieldINS0_8GradientEE19PrepareForExecutionINS0_13PolicyDefaultEEENS_4cont7DataSetERKS7_RKNS6_5FieldENS0_10PolicyBaseIT_EE[_ZN4vtkm6filter11FilterFieldINS0_8GradientEE19PrepareForExecutionINS0_13PolicyDefaultEEENS_4cont7DataSetERKS7_RKNS6_5FieldENS0_10PolicyBaseIT_EE]+0x478): undefined reference to `vtkm::cont::DataSet vtkm::filter::Gradient::DoExecute\<vtkm::Vec\<double, 3\>, vtkm::cont::StorageTagBasic, vtkm::filter::PolicyDefault\>(vtkm::cont::DataSet const&, vtkm::cont::ArrayHandle\<vtkm::Vec\<double, 3\>, vtkm::cont::StorageTagBasic\> const&, vtkm::filter::FieldMetadata const&, vtkm::filter::PolicyBasevtkm::filter::PolicyDefault)’  
D:/Msys64/mingw64/bin/…/lib/gcc/x86\_64-w64-mingw32/11.2.0/…/…/…/…/x86\_64-w64-mingw32/bin/ld.exe: CMakeFiles\AcceleratorsVTKmFilters.dir/objects.a(vtkmGradient.cxx.obj):vtkmGradient.c:(.text$\_ZN4vtkm6filter6FilterINS0\_8GradientEE7ExecuteERKNS\_4cont7DataSetE[\_ZN4vtkm6filter6FilterINS0\_8GradientEE7ExecuteERKNS\_4cont7DataSetE]+0xb3b): undefined reference to `vtkm::cont::DataSet vtkm::filter::Gradient::DoExecute<vtkm::Vec<double, 3>, vtkm::cont::StorageTagSOA, vtkm::filter::PolicyDefault>(vtkm::cont::DataSet const&, vtkm::cont::ArrayHandle<vtkm::Vec<double, 3>, vtkm::cont::StorageTagSOA> const&, vtkm::filter::FieldMetadata const&, vtkm::filter::PolicyBase<vtkm::filter::PolicyDefault>)' D:/Msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\AcceleratorsVTKmFilters.dir/objects.a(vtkmGradient.cxx.obj):vtkmGradient.c:(.text$_ZN4vtkm6filter6FilterINS0_8GradientEE7ExecuteERKNS_4cont7DataSetE[_ZN4vtkm6filter6FilterINS0_8GradientEE7ExecuteERKNS_4cont7DataSetE]+0xba9): undefined reference to `vtkm::cont::DataSet vtkm::filter::Gradient::DoExecute\<vtkm::Vec\<double, 3\>, vtkm::cont::StorageTagBasic, vtkm::filter::PolicyDefault\>(vtkm::cont::DataSet const&, vtkm::cont::ArrayHandle\<vtkm::Vec\<double, 3\>, vtkm::cont::StorageTagBasic\> const&, vtkm::filter::FieldMetadata const&, vtkm::filter::PolicyBasevtkm::filter::PolicyDefault)’  
collect2.exe: error: ld returned 1 exit status  
mingw32-make[2]: \*\*\* [Accelerators\Vtkm\Filters\CMakeFiles\AcceleratorsVTKmFilters.dir\build.make:499: bin/libvtkAcceleratorsVTKmFilters-9.1.dll] Error 1  
mingw32-make[1]: \*\*\* [CMakeFiles\Makefile2:16044: Accelerators/Vtkm/Filters/CMakeFiles/AcceleratorsVTKmFilters.dir/all] Error 2  
mingw32-make: \*\*\* [Makefile:135: all] Error 2

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.vtk.org/u/ben.boeckel)
#### Post date: [November 24, 2021, 3:05pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/2 "2021-11-24T15:05:59Z")

</div>

I don’t think VTK-m is well-tested with MinGW (not that VTK is either).

@jschueller Have you managed to compile VTK-m with MinGW?

Cc: @vbolea

---

<div class="post-metadata">

### Author: ![jschueller](https://discourse.vtk.org/user_avatar/discourse.vtk.org/jschueller/32/3398_2.png) [@jschueller](https://discourse.vtk.org/u/jschueller)
#### Post date: [November 24, 2021, 3:14pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/3 "2021-11-24T15:14:04Z")

</div>

No, I always disable it.

---

<div class="post-metadata">

### Author: ![lassoan](https://discourse.vtk.org/user_avatar/discourse.vtk.org/lassoan/32/50_2.png) [@lassoan](https://discourse.vtk.org/u/lassoan)
#### Post date: [November 26, 2021, 3:28am UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/4 "2021-11-26T03:28:58Z")

</div>

You will probably run into many issues at all stages (development, build, run, test, package) if you try to use mingw instead of a Visual Studio build toolset. With the help of CMake you can develop code that is compiled using the best supported build toolset on each platform.

---

<div class="post-metadata">

### Author: ![jschueller](https://discourse.vtk.org/user_avatar/discourse.vtk.org/jschueller/32/3398_2.png) [@jschueller](https://discourse.vtk.org/u/jschueller)
#### Post date: [November 26, 2021, 12:58pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/5 "2021-11-26T12:58:56Z")

</div>

let me disagree. vtk (and paraview) works generally fine with mingw except for minor compilation problems from time to time. that’s understandable because upstream does not support it.

---

<div class="post-metadata">

### Author: ![lassoan](https://discourse.vtk.org/user_avatar/discourse.vtk.org/lassoan/32/50_2.png) [@lassoan](https://discourse.vtk.org/u/lassoan)
#### Post date: [November 26, 2021, 1:56pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/6 "2021-11-26T13:56:23Z")

</div>

I believe you that things are expected to _mostly work_ if you use mingw for development on Windows, but things are expected to _work_ if you use MSVC because magnitudes more people use it (and so any errors are found and fixed sooner, more convenience features are available, etc.).

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.vtk.org/u/ben.boeckel)
#### Post date: [November 26, 2021, 4:19pm UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/7 "2021-11-26T16:19:44Z")

</div>

Yes, this is the difference between “supported” and “patches accepted”. Julien is a valued contributor by verifying MinGW support for VTK and ParaView that we just do not have the resources allocated to continually verify.

---

<div class="post-metadata">

### Author: ![rockydut](https://discourse.vtk.org/user_avatar/discourse.vtk.org/rockydut/32/4261_2.png) [@rockydut](https://discourse.vtk.org/u/rockydut)
#### Post date: [November 30, 2021, 2:25am UTC](https://discourse.vtk.org/t/mingw-compile-error-for-vtkm/7265/8 "2021-11-30T02:25:11Z")

</div>

I add one new file in ThirdParty\vtkm\vtkvtkm\vtk-m\vtkm\filter. I named it GradientPoints.cxx. Then the vtkm can be compiled. It’s great.

The code is:

// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR  
// PURPOSE. See the above copyright notice for more information.  
//============================================================================

#ifndef vtk\_m\_filter\_Gradient\_point\_cxx  
#define vtk\_m\_filter\_Gradient\_point\_cxx

#include \<vtkm/filter/Gradient.h\>  
#include \<vtkm/filter/Gradient.hxx\>

namespace vtkm  
{  
namespace filter  
{  
template VTKM\_FILTER\_GRADIENT\_TEMPLATE\_EXPORT vtkm::cont::DataSet Gradient::DoExecute(  
const vtkm::cont::DataSet&,  
const vtkm::cont::ArrayHandle\<vtkm::Vec\<double, 3\>, vtkm::cont::StorageTagBasic\>&,  
const vtkm::filter::FieldMetadata&,  
vtkm::filter::PolicyBasevtkm::filter::PolicyDefault);

template VTKM\_FILTER\_GRADIENT\_TEMPLATE\_EXPORT vtkm::cont::DataSet Gradient::DoExecute(  
const vtkm::cont::DataSet&,  
const vtkm::cont::ArrayHandle\<vtkm::Vec\<double, 3\>, vtkm::cont::StorageTagSOA\>&,  
const vtkm::filter::FieldMetadata&,  
vtkm::filter::PolicyBasevtkm::filter::PolicyDefault);  
}  
}

#endif
