|
各位大神,你们好!
最近在学习在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++编译器的。
希望能获得你们的帮助。谢谢~
|
-
1.jpg
(61.57 KB, 下载次数: 328)
属性页添加hdf5的lib路径
-
2.jpg
(58.04 KB, 下载次数: 316)
“”“工具”“”“选项”卡中添加hdf5的lib和include路径
-
3.jpg
(54.06 KB, 下载次数: 316)
“”“项目”“”“属性”“”“input”选项卡做的设置
-
4.jpg
(69.54 KB, 下载次数: 325)
“帮助”选项卡
|