MantisBT - VTK
View Issue Details
0002952VTK(No Category)public2006-03-10 13:012016-08-12 09:54
John O'Hara 
Brad King 
normalminoralways
closedmoved 
 
 
0002952: vtk + java fails to build using MinGW
I was attempting to build VTK + Java wrappings in MinGW.

The build fails when compiling Common/vtkJavaUtil.cxx because the file mapiform.h is not available.

I believe this is a Microsoft Visual Studio-specific header file, which is not available to MinGW.

I has, as of yet, not been able to find a workaround for this problem.
No tags attached.
Issue History
2011-06-16 13:11Zack GalbreathCategory => (No Category)
2016-08-12 09:54Kitware RobotNote Added: 0036844
2016-08-12 09:54Kitware RobotStatusexpired => closed
2016-08-12 09:54Kitware RobotResolutionopen => moved

Notes
(0003863)
John O'Hara   
2006-03-14 15:07   
Addendum:

Commenting out the offending #include leads to the following error report:



Linking CXX shared library ../bin/libvtkCommonJava.dll
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray13GetTupleValueEiPc[vtkCharArray::GetTupleValue(int, char*)]+0x1b):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::GetTupleValue(int, char*)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray13SetTupleValueEiPKc[vtkCharArray::SetTupleValue(int, char const*)]+0x1b):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::SetTupleValue(int, char const*)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray16InsertTupleValueEiPKc[vtkCharArray::InsertTupleValue(int, char const*)]+0x1b):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::InsertTupleValue(int, char const*)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray20InsertNextTupleValueEPKc[vtkCharArray::InsertNextTupleValue(char const*)]+0x14):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::InsertNextTupleValue(char const*)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray17SetNumberOfValuesEi[vtkCharArray::SetNumberOfValues(int)]+0x14):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray11InsertValueEic[vtkCharArray::InsertValue(int, char)]+0x22):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::InsertValue(int, char)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray15InsertNextValueEc[vtkCharArray::InsertNextValue(char)]+0x1b):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::InsertNextValue(char)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray12WritePointerEii[vtkCharArray::WritePointer(int, int)]+0x1b):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::WritePointer(int, int)'
CMakeFiles/vtkCommonJava.dir/vtkCharArrayJava.obj(.text$_ZN12vtkCharArray8SetArrayEPcii[vtkCharArray::SetArray(char*, int, int)]+0x22):vtkCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<char>::SetArray(char*, int, int)'
CMakeFiles/vtkCommonJava.dir/vtkDoubleArrayJava.obj(.text$_ZN14vtkDoubleArray17SetNumberOfValuesEi[vtkDoubleArray::SetNumberOfValues(int)]+0x14):vtkDoubleArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<double>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkDoubleArrayJava.obj(.text$_ZN14vtkDoubleArray11InsertValueEid[vtkDoubleArray::InsertValue(int, double)]+0x1b):vtkDoubleArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<double>::InsertValue(int, double)'
CMakeFiles/vtkCommonJava.dir/vtkDoubleArrayJava.obj(.text$_ZN14vtkDoubleArray15InsertNextValueEd[vtkDoubleArray::InsertNextValue(double)]+0x14):vtkDoubleArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<double>::InsertNextValue(double)'
CMakeFiles/vtkCommonJava.dir/vtkFloatArrayJava.obj(.text$_ZN13vtkFloatArray17SetNumberOfValuesEi[vtkFloatArray::SetNumberOfValues(int)]+0x14):vtkFloatArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<float>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkFloatArrayJava.obj(.text$_ZN13vtkFloatArray11InsertValueEif[vtkFloatArray::InsertValue(int, float)]+0x1b):vtkFloatArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<float>::InsertValue(int, float)'
CMakeFiles/vtkCommonJava.dir/vtkFloatArrayJava.obj(.text$_ZN13vtkFloatArray15InsertNextValueEf[vtkFloatArray::InsertNextValue(float)]+0x14):vtkFloatArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<float>::InsertNextValue(float)'
CMakeFiles/vtkCommonJava.dir/vtkIdTypeArrayJava.obj(.text$_ZN14vtkIdTypeArray17SetNumberOfValuesEi[vtkIdTypeArray::SetNumberOfValues(int)]+0x14):vtkIdTypeArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<int>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkIdTypeArrayJava.obj(.text$_ZN14vtkIdTypeArray11InsertValueEii[vtkIdTypeArray::InsertValue(int, int)]+0x1b):vtkIdTypeArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<int>::InsertValue(int, int)'
CMakeFiles/vtkCommonJava.dir/vtkIdTypeArrayJava.obj(.text$_ZN14vtkIdTypeArray15InsertNextValueEi[vtkIdTypeArray::InsertNextValue(int)]+0x14):vtkIdTypeArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<int>::InsertNextValue(int)'
CMakeFiles/vtkCommonJava.dir/vtkIntArrayJava.obj(.text$_ZN11vtkIntArray17SetNumberOfValuesEi[vtkIntArray::SetNumberOfValues(int)]+0x14):vtkIntArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<int>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkIntArrayJava.obj(.text$_ZN11vtkIntArray11InsertValueEii[vtkIntArray::InsertValue(int, int)]+0x1b):vtkIntArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<int>::InsertValue(int, int)'
CMakeFiles/vtkCommonJava.dir/vtkIntArrayJava.obj(.text$_ZN11vtkIntArray15InsertNextValueEi[vtkIntArray::InsertNextValue(int)]+0x14):vtkIntArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<int>::InsertNextValue(int)'
CMakeFiles/vtkCommonJava.dir/vtkLongArrayJava.obj(.text$_ZN12vtkLongArray17SetNumberOfValuesEi[vtkLongArray::SetNumberOfValues(int)]+0x14):vtkLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<long>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkLongArrayJava.obj(.text$_ZN12vtkLongArray11InsertValueEil[vtkLongArray::InsertValue(int, long)]+0x1b):vtkLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<long>::InsertValue(int, long)'
CMakeFiles/vtkCommonJava.dir/vtkLongArrayJava.obj(.text$_ZN12vtkLongArray15InsertNextValueEl[vtkLongArray::InsertNextValue(long)]+0x14):vtkLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<long>::InsertNextValue(long)'
CMakeFiles/vtkCommonJava.dir/vtkShortArrayJava.obj(.text$_ZN13vtkShortArray17SetNumberOfValuesEi[vtkShortArray::SetNumberOfValues(int)]+0x14):vtkShortArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<short>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkShortArrayJava.obj(.text$_ZN13vtkShortArray11InsertValueEis[vtkShortArray::InsertValue(int, short)]+0x23):vtkShortArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<short>::InsertValue(int, short)'
CMakeFiles/vtkCommonJava.dir/vtkShortArrayJava.obj(.text$_ZN13vtkShortArray15InsertNextValueEs[vtkShortArray::InsertNextValue(short)]+0x1c):vtkShortArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<short>::InsertNextValue(short)'
CMakeFiles/vtkCommonJava.dir/vtkSignedCharArrayJava.obj(.text$_ZN18vtkSignedCharArray17SetNumberOfValuesEi[vtkSignedCharArray::SetNumberOfValues(int)]+0x14):vtkSignedCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<signed char>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkSignedCharArrayJava.obj(.text$_ZN18vtkSignedCharArray11InsertValueEia[vtkSignedCharArray::InsertValue(int, signed char)]+0x22):vtkSignedCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<signed char>::InsertValue(int, signed char)'
CMakeFiles/vtkCommonJava.dir/vtkSignedCharArrayJava.obj(.text$_ZN18vtkSignedCharArray15InsertNextValueEa[vtkSignedCharArray::InsertNextValue(signed char)]+0x1b):vtkSignedCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<signed char>::InsertNextValue(signed char)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedCharArrayJava.obj(.text$_ZN20vtkUnsignedCharArray17SetNumberOfValuesEi[vtkUnsignedCharArray::SetNumberOfValues(int)]+0x14):vtkUnsignedCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned char>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedCharArrayJava.obj(.text$_ZN20vtkUnsignedCharArray11InsertValueEih[vtkUnsignedCharArray::InsertValue(int, unsigned char)]+0x22):vtkUnsignedCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned char>::InsertValue(int, unsigned char)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedCharArrayJava.obj(.text$_ZN20vtkUnsignedCharArray15InsertNextValueEh[vtkUnsignedCharArray::InsertNextValue(unsigned char)]+0x1b):vtkUnsignedCharArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned char>::InsertNextValue(unsigned char)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedIntArrayJava.obj(.text$_ZN19vtkUnsignedIntArray17SetNumberOfValuesEi[vtkUnsignedIntArray::SetNumberOfValues(int)]+0x14):vtkUnsignedIntArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned int>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedIntArrayJava.obj(.text$_ZN19vtkUnsignedIntArray11InsertValueEij[vtkUnsignedIntArray::InsertValue(int, unsigned int)]+0x1b):vtkUnsignedIntArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned int>::InsertValue(int, unsigned int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedIntArrayJava.obj(.text$_ZN19vtkUnsignedIntArray15InsertNextValueEj[vtkUnsignedIntArray::InsertNextValue(unsigned int)]+0x14):vtkUnsignedIntArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned int>::InsertNextValue(unsigned int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedLongArrayJava.obj(.text$_ZN20vtkUnsignedLongArray17SetNumberOfValuesEi[vtkUnsignedLongArray::SetNumberOfValues(int)]+0x14):vtkUnsignedLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned long>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedLongArrayJava.obj(.text$_ZN20vtkUnsignedLongArray11InsertValueEim[vtkUnsignedLongArray::InsertValue(int, unsigned long)]+0x1b):vtkUnsignedLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned long>::InsertValue(int, unsigned long)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedLongArrayJava.obj(.text$_ZN20vtkUnsignedLongArray15InsertNextValueEm[vtkUnsignedLongArray::InsertNextValue(unsigned long)]+0x14):vtkUnsignedLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned long>::InsertNextValue(unsigned long)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedShortArrayJava.obj(.text$_ZN21vtkUnsignedShortArray17SetNumberOfValuesEi[vtkUnsignedShortArray::SetNumberOfValues(int)]+0x14):vtkUnsignedShortArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned short>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedShortArrayJava.obj(.text$_ZN21vtkUnsignedShortArray11InsertValueEit[vtkUnsignedShortArray::InsertValue(int, unsigned short)]+0x23):vtkUnsignedShortArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned short>::InsertValue(int, unsigned short)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedShortArrayJava.obj(.text$_ZN21vtkUnsignedShortArray15InsertNextValueEt[vtkUnsignedShortArray::InsertNextValue(unsigned short)]+0x1c):vtkUnsignedShortArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned short>::InsertNextValue(unsigned short)'
CMakeFiles/vtkCommonJava.dir/vtkLongLongArrayJava.obj(.text$_ZN16vtkLongLongArray17SetNumberOfValuesEi[vtkLongLongArray::SetNumberOfValues(int)]+0x14):vtkLongLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<long long>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkLongLongArrayJava.obj(.text$_ZN16vtkLongLongArray11InsertValueEix[vtkLongLongArray::InsertValue(int, long long)]+0x22):vtkLongLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<long long>::InsertValue(int, long long)'
CMakeFiles/vtkCommonJava.dir/vtkLongLongArrayJava.obj(.text$_ZN16vtkLongLongArray15InsertNextValueEx[vtkLongLongArray::InsertNextValue(long long)]+0x1b):vtkLongLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<long long>::InsertNextValue(long long)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedLongLongArrayJava.obj(.text$_ZN24vtkUnsignedLongLongArray17SetNumberOfValuesEi[vtkUnsignedLongLongArray::SetNumberOfValues(int)]+0x14):vtkUnsignedLongLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned long long>::SetNumberOfValues(int)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedLongLongArrayJava.obj(.text$_ZN24vtkUnsignedLongLongArray11InsertValueEiy[vtkUnsignedLongLongArray::InsertValue(int, unsigned long long)]+0x22):vtkUnsignedLongLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned long long>::InsertValue(int, unsigned long long)'
CMakeFiles/vtkCommonJava.dir/vtkUnsignedLongLongArrayJava.obj(.text$_ZN24vtkUnsignedLongLongArray15InsertNextValueEy[vtkUnsignedLongLongArray::InsertNextValue(unsigned long long)]+0x1b):vtkUnsignedLongLongArrayJava.cxx: undefined reference to `vtkDataArrayTemplate<unsigned long long>::InsertNextValue(unsigned long long)'
collect2: ld returned 1 exit status
make[2]: *** [bin/libvtkCommonJava.dll] Error 1
make[1]: *** [Common/CMakeFiles/vtkCommonJava.dir/all] Error 2
make: *** [all] Error 2
(0003864)
Mathieu Malaterre   
2006-03-14 15:36   
I don't think mapiform.h should be included. I'll double check. Thanks.
(0003865)
Brad King   
2006-03-14 15:47   
There is no dashboard entry for VTK on MinGW that uses shared libraries. I've been attempting to resolve the vtkDataArrayTemplate symbol export/import problems you are seeing but have not yet had the time to really nail down a solution. I'll update this bug report when I get that problem solved.
(0003866)
John O'Hara   
2006-03-14 16:01   
Hint:

When setting up CMake using MinGW, you'll need to rename the files CMake creates as

<build dir>/CMake/libcmVTK_*.dll

to <build dir>/CMake/cmVTK_*.dll

in order to get CMake to set up your build project correctly. I'm not sure if this is related to this bug, or a separate bug. You only need to do this if you have BUILD_SHARED_LIBS set to ON.

(0003872)
Brad King   
2006-03-16 17:12   
The vtkDataArrayTemplate problem is due to GCC on MinGW having trouble dllexport-ing explicit template instantiations. I've updated the CMakeLists.txt file at the top of VTK to pass -Wl,--export-all-symbols to avoid the issue. It should be safe to export all symbols from DLLs because VTK works on non-dll platforms where all symbols are exported anyway. I'll have the change merged to the VTK 5.0 branch.

The loaded command problem is due to a bug in CMake which I've now fixed in CVS. It was improperly computing the name of shared modules when loading the command on MinGW.

CVS CMake has much stronger support for MinGW than previous versions, and it will even bootstrap at an MSys prompt. Please use it when trying to get farther in the build.
(0003909)
Mathieu Malaterre   
2006-03-27 16:55   
Can we close the bug ?
(0003919)
Brad King   
2006-03-28 14:51   
The original problem, the lack of mapiform.h, has not been fixed so we cannot yet close this bug.
(0003927)
John O'Hara   
2006-03-30 10:48   
Additionally, even after commenting out the mapiform.h call and updating to the latest CVS code, I'm still having some issues. Now, I get the following error when attempting to make

$ make
Linking CXX shared library ../bin/libvtkRenderingJava.dll
c:\mingw\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot fin d -ljawt.lib
collect2: ld returned 1 exit status
make[2]: *** [bin/libvtkRenderingJava.dll] Error 1
make[1]: *** [Rendering/CMakeFiles/vtkRenderingJava.dir/all] Error 2
make: *** [all] Error 2

For some reason, it can't seem to find the jawt.lib file, even though it is where it is supposed to be. I was going to upgrade CMake to the CVS version also, but I seem to be experiencing connection errors whenever I try to get the new source. I'll try again later today. (FYI, I saw another member of the mailing-list encountered the same problem, no solution as of yet)
(0003928)
John O'Hara   
2006-03-30 10:51   
Correction: the error message is

$ make
Linking CXX shared library ../bin/libvtkRenderingJava.dll
c:\mingw\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -ljawt.lib
collect2: ld returned 1 exit status
make[2]: *** [bin/libvtkRenderingJava.dll] Error 1
make[1]: *** [Rendering/CMakeFiles/vtkRenderingJava.dir/all] Error 2
make: *** [all] Error 2
  




(0003929)
John O'Hara   
2006-03-30 10:53   
Let's try this again...
$ make
Linking CXX shared library ../bin/libvtkRenderingJava.dll
c:\mingw\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -ljawt.lib
collect2: ld returned 1 exit status
make[2]: *** [bin/libvtkRenderingJava.dll] Error 1
make[1]: *** [Rendering/CMakeFiles/vtkRenderingJava.dir/all] Error 2
make: *** [all] Error 2
(0003931)
Brad King   
2006-03-30 11:00   
Don't worry about the missing backslashes in your bug report. It is a bug in the bug tracker itself which I've reported.

You need to use CVS CMake on MinGW as well as CVS VTK.
(0036844)
Kitware Robot   
2016-08-12 09:54   
Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current VTK Issues page linked in the banner at the top of this page.