HDF5:构建Fortran库(Windows)

问题描述 投票:2回答:1

首先,我阅读了一个类似的StackOverflow问题here,但它没有解决我的问题。

我想在我的Fortran-2008项目中使用HDF5文件,所以我需要获取静态和动态HDF5库文件才能使用它们。

我已经做了:

  1. 我从以下位置下载并安装了HDF5 Windows 10 x64 VS15二进制文件:HDF5官方网站(here)。

  2. 我测试了它是否在Windows控制台中运行此命令:h5dump.exe效果很好!

  3. 因此,我复制一个基本的HDF5 Fortran示例并将其粘贴到新的Visual Studio Fortran项目中。 Fortran示例源代码(here
  4. 然后,在Project Properties | Fortran | General | Additional Include Directories下插入指向hdf5.mod位置的路径

C:\Program Files\HDF_Group\HDF5\1.10.5\include\static

  1. 要链接,请在Project | Properties | Linker | General | Additional Library Directories下的.lib文件的位置插入路径。

C:\Program Files\HDF_Group\HDF5\1.10.5\lib

  1. 然后,在Project | Properties | Linker | Input | Additional Dependencies下插入 hdf5_fortran.lib

我为All ConfigurationsAll Platforms完成了所有这些配置。我的活动VS环境是Debug-x64。

问题

我右键单击了Fortran解决方案名称和“ Build”,但是出现了这些链接器错误:

unresolved external symbol H5GLOBAL_mp_H5T_NATIVE_INTEGER
unresolved external symbol H5GLOBAL_mp_H5FD_MEM_NTYPES_F
unresolved external symbol H5GLOBAL_mp_H5F_ACC_TRUNC_F

a)我现在要做的是解决它?

b] HDF5二进制安装程序名称(hdf5-1.10.5-Std-win10_64-vs15.zip)在文件名中具有此vs15。我不知道,但是我认为它的意思是“ Visual Studio 2015”。在Visual Studio 2019 x64内使用这些C和Fortran HDF5库是否有问题?

我的系统是:

  • Windows 10 x64
  • Visual Studio 2019企业版
  • 英特尔Visual Fortran 2019
  • Fortran示例源代码:

! This example is used in the HDF5 Tutorial.

PROGRAM H5_CRTDAT

  USE HDF5 ! This module contains all necessary modules

  IMPLICIT NONE

  CHARACTER(LEN=8), PARAMETER :: filename = "dsetf.h5" ! File name
  CHARACTER(LEN=4), PARAMETER :: dsetname = "dset"     ! Dataset name

  INTEGER(HID_T) :: file_id       ! File identifier
  INTEGER(HID_T) :: dset_id       ! Dataset identifier
  INTEGER(HID_T) :: dspace_id     ! Dataspace identifier


  INTEGER(HSIZE_T), DIMENSION(2) :: dims = (/4,6/) ! Dataset dimensions
  INTEGER     ::   rank = 2                        ! Dataset rank

  INTEGER     ::   error ! Error flag

  !
  ! Initialize FORTRAN interface.
  !
  CALL h5open_f(error)

  !
  ! Create a new file using default properties.
  !
  CALL h5fcreate_f(filename, H5F_ACC_TRUNC_F, file_id, error)

  !
  ! Create the dataspace.
  !
  CALL h5screate_simple_f(rank, dims, dspace_id, error)

  !
  ! Create the dataset with default properties.
  !
  CALL h5dcreate_f(file_id, dsetname, H5T_NATIVE_INTEGER, dspace_id, &
       dset_id, error)

  !
  ! End access to the dataset and release resources used by it.
  !
  CALL h5dclose_f(dset_id, error)

  !
  ! Terminate access to the data space.
  !
  CALL h5sclose_f(dspace_id, error)

  !
  ! Close the file.
  !
  CALL h5fclose_f(file_id, error)

  !
  ! Close FORTRAN interface.
  !
  CALL h5close_f(error)

END PROGRAM H5_CRTDAT

首先,我在这里阅读了一个类似的StackOverflow问题,但并不能解决我的问题。我想在我的Fortran-2008项目中使用HDF5文件,所以我需要获取静态和动态...

visual-studio build fortran hdf5
1个回答
0
投票

HDF5 Fortran模块的include目录用于库的静态链接形式,但是您已经为动态链接(共享)形式指定了lib文件。

© www.soinside.com 2019 - 2024. All rights reserved.