首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hdf5 (fortran)库中缺少H5dread_f符号

hdf5 (fortran)库中缺少H5dread_f符号
EN

Stack Overflow用户
提问于 2018-05-12 03:02:41
回答 1查看 252关注 0票数 1

我在编译WRF-DA代码时遇到了一个问题(代码是here)

失败的编译行-

代码语言:javascript
复制
ftn -c -ip -O3  -w -ftz -fno-alias -align all -FR -convert big_endian   -r8        -real-size `expr 8 \* 8` -i4 -I../external/crtm_2.2.3/libsrc   -I/opt/cray/pe/hdf5/1.10.0.3/INTEL/16.0/include   -L/opt/cray/pe/hdf5/1.10.0.3/INTEL/16.0/lib/  -lhdf5hl_fortran -lhdf5_fortran -lhdf5  da_radiance.f 

  da_radiance.f(5884): error #6285: There is no matching specific subroutine for this generic subroutine call.   [H5DREAD_F]
      call H5Dread_f(dhnd1, &
-----------^

我尝试在库中搜索相关的符号,不出所料,该符号不存在(出现的是h5dread_f_c)。

代码语言:javascript
复制
nm /opt/cray/pe/hdf5/1.10.0.3/INTEL/16.0/lib/libhdf5*|grep -i h5dread_f
nm: /opt/cray/pe/hdf5/1.10.0.3/INTEL/16.0/lib/libhdf5.settings: File format not recognized
nm: /opt/cray/pe/hdf5/1.10.0.3/INTEL/16.0/lib/libhdf5_cpp_intel_160.la: File format not recognized
                 U h5dread_f_c
                 U h5dread_f_c
0000000000001290 T h5dread_f_c
0000000000035320 T h5dread_f_c
                 U h5dread_f_c
                 U h5dread_f_c
0000000000001290 T h5dread_f_c
0000000000035320 T h5dread_f_c
                 U h5dread_f_c
                 U h5dread_f_c
0000000000001290 T h5dread_f_c
0000000000035320 T h5dread_f_c
0000000000035320 T h5dread_f_c
0000000000035320 T h5dread_f_c

我尝试编译hdf5-1.10.2。快速浏览一下代码,我发现该函数似乎已在fortran/src/H5Dff.F90中声明(&注释)为-

代码语言:javascript
复制
!  M. Scot Breitenfeld
!  September 17, 2011
!
! Fortran2003 Interface:
!!  SUBROUTINE h5dread_f(dset_id, mem_type_id, buf, hdferr, &
!!                       mem_space_id, file_space_id, xfer_prp)
!!    INTEGER(HID_T), INTENT(IN)              :: dset_id
!!    INTEGER(HID_T), INTENT(IN)              :: mem_type_id
!!    TYPE(C_PTR)   , INTENT(INOUT)           :: buf
!!    INTEGER       , INTENT(OUT)             :: hdferr
!!    INTEGER(HID_T), INTENT(IN)   , OPTIONAL :: mem_space_id
!!    INTEGER(HID_T), INTENT(IN)   , OPTIONAL :: file_space_id
!!    INTEGER(HID_T), INTENT(IN)   , OPTIONAL :: xfer_prp
!*****
  SUBROUTINE h5dread_ptr(dset_id, mem_type_id, buf, hdferr, &
       mem_space_id, file_space_id, xfer_prp)

这个功能在最新版本的HDF5中已经被淘汰了吗?如果是,那么请为我可以找到这个符号的HDF5共享一个合适的(旧的)库版本(&相关的编译标志)。

如果我能提供任何进一步的信息,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2018-05-12 10:39:52

h5dread_f是一个接口,它映射到以下内容之一

代码语言:javascript
复制
INTERFACE h5dread_f
   MODULE PROCEDURE h5dread_reference_obj
   MODULE PROCEDURE h5dread_reference_dsetreg
   MODULE PROCEDURE h5dread_char_scalar
   MODULE PROCEDURE h5dread_ptr
END INTERFACE

似乎传递到函数中的类型无效。

(感谢来自HDF5组的戴夫)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50298690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档