目录
网上有很多的使用教程,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.visual studio的配置
按照文档所说,一步步来,和大部分网上的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工具库,实现常用数据类型的读写_c++读写hdf5_赵大宝字的博客-CSDN博客