class "H5::DataSet" has no member "getNativeObjinfo"

Hello all,

I’m trying to compile HDF5 1.14.0 on a RedHat Linux Enterprise box with intel compilers, and I get the following error at the ‘make’ stage:

dsets.cpp(1100): error: class "H5::DataSet" has no member "getNativeObjinfo"
      dataset.getNativeObjinfo(ninfo, H5O_NATIVE_INFO_HDR);
              ^

dsets.cpp(1108): error: class "H5::DataSet" has no member "getNativeObjinfo"
      dataset.getNativeObjinfo(ninfo, H5O_NATIVE_INFO_ALL);

I configured with

./configure --prefix=/home/sbasu1/packages --enable-fortran --enable-cxx --enable-hl --enable-build-mode=production --with-szlib=/home/sbasu1/packages CC=icc CXX=icpc FC=ifort CFLAGS='-fPIC -O3' FCFLAGS='-fPIC -O3' CXXFLAGS='-fPIC -O3'

I tried Google, but it seems like no one has seen this particular error before. Can anyone help me get past this?

Thanks,
Sourish

Hi Sourish,

That is odd. I just tried with similar configure options and didn’t get compilation errors. I’m curious, is it the only error it gave you?

Binh-Minh

Hi Binh-Minh,

Yes, that’s the only error it is giving me. I just tried it again, and it barfed again on the same error. I’m uploading config.log here in case that helps.

-Sourish

I wonder if you could try building with CMake, (Only if you have that experience). It might be an autotools issue.

BTW, do you intend to use the HDF5 C++ API? If not, you can leave out the --enable-cxx flag.

I downloaded the CMake-hdf5 package following instructions here, but that only provides HDF5 1.10. I am hoping to use a more recent version. The HDF5 I tried building, which failed, was 1.14.0.

I don’t in fact need the C++ API, so I left it out as you suggested. Now I get a different set of errors

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(26): error: invalid redefinition of enum "H5LT_lang_t" (declared at line 25 of "../../hl/src/H5LTpublic.h")
  typedef enum H5LT_lang_t {
               ^

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(27): error: "H5LT_LANG_ERR" has already been declared in the current scope
      H5LT_LANG_ERR = -1, /*this is the first*/
      ^

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(28): error: "H5LT_DDL" has already been declared in the current scope
      H5LT_DDL      = 0,  /*for DDL*/
      ^

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(29): error: "H5LT_C" has already been declared in the current scope
      H5LT_C        = 1,  /*for C*/
      ^

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(30): error: "H5LT_FORTRAN" has already been declared in the current scope
      H5LT_FORTRAN  = 2,  /*for Fortran*/
      ^

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(31): error: "H5LT_NO_LANG" has already been declared in the current scope
      H5LT_NO_LANG  = 3   /*this is the last*/
      ^

In file included from test_lite.c(15):
/home/sbasu1/packages/include/H5LTpublic.h(32): error: invalid redeclaration of type name "H5LT_lang_t" (declared at line 31 of "../../hl/src/H5LTpublic.h")
  } H5LT_lang_t;
    ^

compilation aborted for test_lite.c (code 2)
make[2]: *** [Makefile:1038: test_lite.o] Error 2

I’ve snipped out a few warning messages that also came up, to just show the errors.

Follow the “Support Portal” link to “Downloads” there you can find the latest.

For your convenience: https://portal.hdfgroup.org/display/support/HDF5+1.14.0#files

Can you tell me how to specify the PREFIX if I build hdf5 this way with cmake?

I think I’ve successfully built HDF5 using cmake with build-unix.sh, but I’m not entirely sure what all has been done. I can see that the binaries and shared libraries have not been copied into INSTALLDIR. So what’s the analogous step to ‘make install’ here?