[HDF5] HDF5安装,编译及使用中的各种问题解决方法(Windows)

网上有很多的使用教程,windows下使用相对简单,但是本人在使用中遇到很多坑,现以实际一个c/c++程序为例,将遇到的问题进行整理,这个过程中主要参考的是官方的release_doc和官方论坛https://forum.hdfgroup.org,很多时候是小细节的问题,多注意就好

一.安装

1.安装包

官网下载,丢个链接,这里我下载的是win64.msi安装版本

https://www.hdfgroup.org/downloads

2.源码

源码也是在官网下载,然后源码目中参考release_doc/INSTALL_Windows,一步步编译

这里面的坑是:

I.现在大部分电脑是64位,编译时会报的很多错误都跟版本不统一有关,但是关于版本的问题在INSTALL_Windows中的第IX章"How to build HDF5 for 64-bit Windows",可能一开始按顺序看很难注意到。

II.这个1.8.8版本的文档中指定使用vs2008编译,因为我工作的环境比较用的IDE版本比较低,这个根据不同版本的HDF5进行更改就行

III.当我们电脑中,没有安装zlib和szip的时候,需要按照第五章的内容,找到hdf5-1.8.8/windows/src/H5pubconf.h修改对应的宏,这样就可以在不安装这两个库的情况下进行编译,会少很多错误,当然有需求的还是按照第一章中安装然后设置HDF5_EXT_ZLIB和HDF5_EXT_SZIP变量。

本人使用版本1.8.8

二.编译

windows环境下的两种编译方法

这里指的编译是加上自己的源码和hdf5的库一起编译,INSTALL_Windows中第IV章会讲到Building an application using the HDF5 library or DLL

我自己试了两种,都成功了

1.按照文档所说,一步步来,和大部分网上的hdf5方法类似,主要是vs的配置,我这里说一个最简洁的流程,以vs2013为例

I.左侧选中项目右键-属性-C/C++-常规-附加包含目录。这里放你安装hdf5目录下的include文件夹路径。

II.左侧选中项目右键-属性-链接器-常规-附加库目录。这里放你安装hdf5目录下的lib文件夹路径。

III.还是在链接器-输入-附加依赖项。没有特殊需求比如c++或fortran的话,填入hdf5.lib;hdf5_tools.lib;libzlib.lib;libszip.lib;即可,这部分如果多了或少了会报错,看情况增减。

IV.其次是编译平台一定要选X64(针对64位系统来说)

V.C/C++-代码生成。测试多线程调试应该没啥特殊要求,选多线程调试DLL(/MDd)就行

VI.C/C++-预处理器。这里如果只用lib库,就不需要填了,用DLL的话需要填_HDF5USEDLL_

当然第一种方法在文档中有详细解释,一步步来应该是没问题的,这也是大部分网上看到的资料,我这里就是最简洁的方法。

2.使用CMake编译VS工程

I.写CMakeLists.txt

II.最重要的一点!使用cmake指令一定要附加Win64选项,例如

cmake  .. -G "Visual Studio 12 2013 Win64"

否则对于64位系统的编译32位的库,问题会无法解决,这里通常会报LNK2019,LNK2001等错误。

(这里64位和32位取决于你下载的HDF5版本,如果是32位的,那么请使用Win32编译平台)

CMake编译的好处是省去了上面那么多的步骤,减少出错,并且实现了通用性标准化,只需要修改CMakeLists.txt即可。

3.使用

参考官方手册,抽空我会把我的代码demo放上来,c/c++版本的,等最近再详细更新这一部分。

你可能感兴趣的:(HDF5,c++,HDF5)