On Sun, 4 Sep 2011 16:12:41 +0200, Paul Anton Letnes wrote:
Hello everyone.

My fortran code using hdf5 compiles nicely on a number of machines.
After losing my laptop (sad, but true) I am now installing hdf5 (and
other stuff) on my machine to be able to compile my code again.
Needless to say, I have made no changes to my code, so compilation
should be a breeze after installing all dependencies.

However, I get a number of errors of this kind (one per subroutine
call, I am doing several):
/home/paulanto/Code/Rayleigh2D/Rayleigh2D_Modules/R_save.f90:121.29:

            (/ i_surface /), int(1, kind=hsize_t), hdferr)
                              1
Error: Type mismatch in argument 'size' at (1); passed INTEGER(8) to
INTEGER(4)

The relevant subroutine call looks like this:
        call h5ltset_attribute_int_f(file_id, root,
n_surfaces_name, &
             (/ i_surface /), int(1, kind=hsize_t),
hdferr)

h5ltset_attribute_int_f (and probably the other functions) is expecting "size" to be size_t, not hsize_t. hsize_t and size_t will only be the same depending on the OS , compiler flags, etc../


Changing hsize_t to size_t should fix the problem(s).


My preliminary conclusion is that hsize_t is somehow not the type
that the hdf5 subroutine is expecting. Probably it coincides with the
correct type on some CPUs or some operating systems, hence it has
worked until now.

My hdf5 library (1.8.7) and my code are both compiled with gfortran
4.6.1, which I have used with success before. One potential difference
is that this PC (which I'm borrowing) is running 32 bit linux. Is the
error in my code, is there a bug in hdf5, does gfortran handle this
incorrectly, or something else?

Thanks in advance,
Paul


_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to