Skip to content

Building against hdf5 1.14.6 fails due to hsize_t type mismatch #301

Open
@badshah400

Description

@badshah400

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions