Fortran Coder

查看: 226|回复: 6

[绘图界面库] IVF读取hdf5格式的数据

[复制链接]

12

帖子

3

主题

0

精华

入门

F 币
79 元
贡献
44 点

规矩勋章

发表于 2019-4-29 13:09:17 | 显示全部楼层 |阅读模式
各位大神,你们好!

最近在学习在VS2017下使用IVF19来读取hdf5格式的数据,但是在编译的时候出现错误和警告。
我已经参照了这个网站上http://fcode.cn/guide-58-1.html 对lib和inc进行了配置,但还是不行。

我Win7 (64位)已经安装了hdf5,生成了bin、lib和include的文件,并在环境变量path中进行了声明;接着在VS2017中做了如附图上的设置;运行后报的错误如下:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误  fatal error LNK1120: 11 个无法解析的外部命令  Debug\test.exe  
错误  error LNK2019: 无法解析的外部符号 _H5F_mp_H5FOPEN_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5F_mp_H5FCLOSE_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5D_mp_H5DCLOSE_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5LIB_mp_H5OPEN_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5S_mp_H5SCREATE_SIMPLE_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5D_mp_H5DCREATE_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5S_mp_H5SCLOSE_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_2,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5D_PROVISIONAL_mp_H5DREAD_INTEGER_2,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5F_mp_H5FCREATE_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
错误  error LNK2019: 无法解析的外部符号 _H5D_mp_H5DOPEN_F,该符号在函数 _MAIN__ 中被引用  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5E_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5D_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5S_HSIZE_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5S_FLAGS  Source1.obj  
警告  warning LNK4217: 本地定义的符号 _H5F_FLAGS 在函数 _MAIN__ 中导入  Source1.obj  
警告  warning LNK4217: 本地定义的符号 _INTEGER_TYPES 在函数 _MAIN__ 中导入  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _FLOATING_TYPES  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5I_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5G_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5R_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5O_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5Z_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5GENERIC_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5D_SIZE_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5E_HID_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5T_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5LIB_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5FD_FLAGS  Source1.obj  
警告  warning LNK4217: 本地定义的符号 _PREDEFINED_TYPES 在函数 _MAIN__ 中导入  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5L_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5P_FLAGS_INT  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5FD_HID_FLAGS  Source1.obj  
警告  warning LNK4049: 已导入本地定义的符号 _H5P_FLAGS  Source1.obj  

代码如下(hdf5官网的一个例子):
[Fortran] 纯文本查看 复制代码
! ************************************************************
!
!  This example shows how to read and write data to a
!  dataset.  The program first writes integers to a dataset
!  with dataspace dimensions of DIM0xDIM1, then closes the
!  file.  Next, it reopens the file, reads back the data, and
!  outputs it to the screen.
!
!  This file is intended for use with HDF5 Library verion 1.8
!
! ************************************************************
PROGRAM main
  USE HDF5
  IMPLICIT NONE
  CHARACTER(LEN=14), PARAMETER :: filename = "h5ex_d_rdwr.h5"
  CHARACTER(LEN=3) , PARAMETER :: dataset = "DS1"
  INTEGER          , PARAMETER :: dim0     = 4
  INTEGER          , PARAMETER :: dim1     = 7
  INTEGER :: hdferr
  INTEGER(HID_T) :: file, space, dset ! handles
  INTEGER(HSIZE_T), DIMENSION(1:2)           :: dims = (/dim0, dim1/) ! size read/write buffer
  INTEGER         , DIMENSION(1:dim0,1:dim1) :: wdata, &  ! Write buffer 
                                                rdata     ! Read buffer
  INTEGER :: i, j
  !
  ! Initialize FORTRAN interface.
  !
  CALL h5open_f(hdferr)
  !
  ! Initialize data.
  !
  DO i = 1, dim0
     DO j = 1, dim1
        wdata(i,j) = (i-1)*(j-1)-(j-1)
     ENDDO
  ENDDO
  !
  ! Create a new file using the default properties.
  !
  
  CALL h5fcreate_f(filename, H5F_ACC_TRUNC_F, file, hdferr)
  !
  ! Create dataspace.  Setting size to be the current size.
  !
  CALL h5screate_simple_f(2, dims, space, hdferr)
  !
  ! Create the dataset.  We will use all default properties for this
  ! example.
  !
  CALL h5dcreate_f(file, dataset, H5T_STD_I32LE, space, dset, hdferr)
  !
  ! Write the data to the dataset.
  !
  CALL h5dwrite_f(dset, H5T_NATIVE_INTEGER, wdata, dims, hdferr)
  !
  ! Close and release resources.
  !
  CALL h5dclose_f(dset , hdferr)
  CALL h5sclose_f(space, hdferr)
  CALL h5fclose_f(file , hdferr)
  !
  ! Now we begin the read section of this example.
  !
  !
  ! Open file and dataset using the default properties.
  !
  CALL h5fopen_f(filename, H5F_ACC_RDONLY_F, file, hdferr)
  CALL h5dopen_f (file, dataset, dset, hdferr)
  !
  ! Read the data using the default properties.
  !
  CALL h5dread_f(dset, H5T_NATIVE_INTEGER, rdata, dims, hdferr)
  !
  ! Output the data to the screen.
  !
  WRITE(*, '(/,A,":")') dataset
  DO i=1, dim0
     WRITE(*,'(" [")', ADVANCE='NO')
     WRITE(*,'(80i3)', ADVANCE='NO') rdata(i,:)
     WRITE(*,'(" ]")')
  ENDDO
  WRITE(*, '(/)')
  !
  ! Close and release resources.
  !
  CALL h5dclose_f(dset , hdferr)
  CALL h5fclose_f(file , hdferr)
END PROGRAM main


不知道这个问题如何解决?难道IVF不能读取hdf5数据的?还有就是在“工具”“选项”卡中“Intel Compiler and Tools”中“C++”选项卡中显示的都是“There are no Intel C++ Compilers installed”,但是在“帮助”“关于MVS”中是有C++编译器的。
希望能获得你们的帮助。谢谢~

属性页添加hdf5的lib路径

属性页添加hdf5的lib路径

“”“工具”“”“选项”卡中添加hdf5的lib和include路径

“”“工具”“”“选项”卡中添加hdf5的lib和include路径

“”“项目”“”“属性”“”“input”选项卡做的设置

“”“项目”“”“属性”“”“input”选项卡做的设置

“帮助”选项卡

“帮助”选项卡
回复

使用道具 举报

1418

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
698 元
贡献
530 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-4-29 14:16:38 | 显示全部楼层
你编译的是 fortran 版本吗?

12

帖子

3

主题

0

精华

入门

F 币
79 元
贡献
44 点

规矩勋章

 楼主| 发表于 2019-4-29 15:09:11 | 显示全部楼层
嗯嗯,是的
回复

使用道具 举报

1418

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
698 元
贡献
530 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-4-29 21:59:20 | 显示全部楼层
你可以把你编译好的 bin\lib 和 mod 文件发上来看看

12

帖子

3

主题

0

精华

入门

F 币
79 元
贡献
44 点

规矩勋章

 楼主| 发表于 2019-4-30 09:07:04 | 显示全部楼层
感谢你的回复~
由于用户组上传文件大小限制,我把hdf5文件上传到云盘了(5M左右)
链接:https://pan.baidu.com/s/1NrDA8SEgP6V8AIU8Y57evA
提取码:4ld4

感谢你

1418

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
698 元
贡献
530 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-4-30 09:44:09 | 显示全部楼层
这张图里的设置,加一个 hdf5_fortran.lib

12

帖子

3

主题

0

精华

入门

F 币
79 元
贡献
44 点

规矩勋章

 楼主| 发表于 2019-4-30 11:55:43 | 显示全部楼层
fcode 发表于 2019-4-30 09:44
这张图里的设置,加一个 hdf5_fortran.lib

666666666~太感谢您了大神!!!!终于成功了

这个问题主要原因是不是因为所需要的库没有链接好导致的,我还以为ivf不能读取hdf5数据
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-8-21 13:41

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表