Open
Description
Trying to build ossim 2.12.0
against HDF5 1.14.6, for openSUSE Tumbleweed, we find that compilation fails with the following type mismatch issue:
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp:1148:77: error: call of overloaded ‘toString(__gnu_cxx::__alloc_traits<std::allocator<long unsigned int>, long unsigned int>::value_type&)’ is ambiguous
[ 20s] 1148 | dimString = ossimString("(") + dimOut.str() + ossimString::toString(dims[dims.size()-1])+")";
[ 20s] | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
[ 20s] In file included from /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimErrorCodes.h:19,
[ 20s] from /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimErrorStatusInterface.h:21,
[ 20s] from /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimKeywordlist.h:15,
[ 20s] from /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/hdf5/ossimHdf5Info.h:18,
[ 20s] from /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp:14:
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:650:23: note: candidate: ‘static ossimString ossimString::toString(bool)’
[ 20s] 650 | static ossimString toString(bool aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:651:23: note: candidate: ‘static ossimString ossimString::toString(ossim_int16)’
[ 20s] 651 | static ossimString toString(ossim_int16 aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:652:23: note: candidate: ‘static ossimString ossimString::toString(ossim_uint16)’
[ 20s] 652 | static ossimString toString(ossim_uint16 aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:653:23: note: candidate: ‘static ossimString ossimString::toString(ossim_int32)’
[ 20s] 653 | static ossimString toString(ossim_int32 aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:654:23: note: candidate: ‘static ossimString ossimString::toString(ossim_uint32)’
[ 20s] 654 | static ossimString toString(ossim_uint32 aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:655:23: note: candidate: ‘static ossimString ossimString::toString(ossim_int64)’
[ 20s] 655 | static ossimString toString(ossim_int64 aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:656:23: note: candidate: ‘static ossimString ossimString::toString(ossim_uint64)’
[ 20s] 656 | static ossimString toString(ossim_uint64 aValue);
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:665:23: note: candidate: ‘static ossimString ossimString::toString(ossim_float32, ossim_int32, bool)’
[ 20s] 665 | static ossimString toString(ossim_float32 aValue,
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/include/ossim/base/ossimString.h:676:23: note: candidate: ‘static ossimString ossimString::toString(ossim_float64, ossim_int32, bool)’
[ 20s] 676 | static ossimString toString(ossim_float64 aValue,
[ 20s] | ^~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp:1181:38: warning: comparison of integer expressions of different signedness: ‘ossim_uint32’ {aka ‘unsigned int’} and ‘ossim_int32’ {aka ‘int’} [-Wsign-compare]
[ 20s] 1181 | for (; ((charIdx < strSize) && (*endPtr)); ++charIdx,++endPtr);
[ 20s] | ~~~~~~~~^~~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp:1162:32: warning: unused variable ‘pad’ [-Wunused-variable]
[ 20s] 1162 | H5T_str_t pad;
[ 20s] | ^~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp:1208:21: warning: unused variable ‘swapOrder’ [-Wunused-variable]
[ 20s] 1208 | bool swapOrder = (order!=ossim::byteOrder());
[ 20s] | ^~~~~~~~~
[ 20s] /home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp:1236:21: warning: unused variable ‘swapOrder’ [-Wunused-variable]
[ 20s] 1236 | bool swapOrder = (order!=ossim::byteOrder());
[ 20s] | ^~~~~~~~~
[ 20s] make[2]: *** [src/CMakeFiles/ossim.dir/build.make:13564: src/CMakeFiles/ossim.dir/hdf5/ossimHdf5Info.cpp.o] Error 1
[ 20s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/ossim-2.12.0-build/ossim-2.12.0/build'
[ 20s] make[1]: *** [CMakeFiles/Makefile2:1775: src/CMakeFiles/ossim.dir/all] Error 2
[ 20s] make: *** [Makefile:139: all] Error 2
Using the following patch allows the compilation to succeed, but please let me know if this does not look like the right solution:
Index: ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp
===================================================================
--- ossim-2.12.0.orig/src/hdf5/ossimHdf5Info.cpp
+++ ossim-2.12.0/src/hdf5/ossimHdf5Info.cpp
@@ -1145,7 +1145,7 @@ void ossimHdf5Info::dumpArrayType( H5::A
nArrayElements*=dims[idx];
}
- dimString = ossimString("(") + dimOut.str() + ossimString::toString(dims[dims.size()-1])+")";
+ dimString = ossimString("(") + dimOut.str() + ossimString::toString(ossim_uint64(dims[dims.size()-1]))+")";
m_kwl.addPair(prefix+".dimensions", dimString);
ossim_uint32 typeSize = superType.getSize();
Many thanks for the very useful library.
Metadata
Metadata
Assignees
Labels
No labels