HDF5安装教程在源码包中的release_docs文件夹中的INSTALL文件中有详细介绍。
根据系统选择下载源码包,否则导致编译出错:
https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.2/src/
安装HDF5 C++的库需要将解压目录下的configure文件中的:
HDF_CXX=no
修改为
HDF_CXX=yes
安装HDF5版本号X.Y.Z到路径/usr/local/hdf5的安装步骤如下:
1)用命令解压,也可以直接解压
tar zxf hdf5-X.Y.Z.tar.gz
2)定位源码路径
cd hdf5-X.Y.Z
3)安装,依次执行如下命令
./configure --prefix=/usr/local/hdf5 # 指定安装路径
sudo make
sudo make install
如果不需要安装C++库,可以直接使用命令行安装:
sudo apt-get install libhdf5-dev
ubuntu 16.04 安装 hdf5-1.12 c++库
HDF5 C++ 使用
QtCreator配置HDF5库
1)打开Qt Creator新建一个Qt Console Application程序。添加库“Add Library”,如果该选项没反应,打开Pro文件右键选择“Add Library”。
2)选择外部库,分别根据自己编译的路劲设置如下:
#include "hdf5.h"
#include "stdlib.h"
#include "stdio.h"
int main(){
hid_t file_id;
herr_t status;
// create file; overwrite existing one `H5F_ACC_TRUNC`
file_id = H5Fcreate("file.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
// int *dset = malloc(24*sizeof(int));
int dset[24];
for(int i = 0; i < 24; i++){
dset[i] = i;
}
// create data space
hsize_t dims[2];
dims[0] = 4;
dims[1] = 6;
hid_t dataspace_id = H5Screate_simple(2, dims, NULL);
// create data set
hid_t dataset_id = H5Dcreate2(file_id, "/dset", H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset);
hid_t group_id = H5Gopen2(file_id, "/MyGroup", H5P_DEFAULT);
// use group_id instead of file id to create dataset under the group
hid_t dataset2_id = H5Dcreate2(group_id, "dset2", H5T_STD_I32BE, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
// write data using dataset2_id
status = H5Dclose(dataset_id);
status = H5Sclose(dataspace_id);
status = H5Fclose(file_id);
return 0;
}
#include "hdf5.h"
#include "stdlib.h"
#include "stdio.h"
int main(){
hid_t file_id;
herr_t status;
file_id = H5Fopen("result.hdf5", H5F_ACC_RDWR, H5P_DEFAULT);
// get data set info
hid_t dataset_id = H5Dopen2(file_id, "/result", H5P_DEFAULT);
// get data space info
hid_t space_id = H5Dget_space(dataset_id);
hsize_t dims_out[2];
H5Sget_simple_extent_dims(space_id, dims_out, NULL);
// allocate data buffer
int *dset_data = malloc(dims_out[0] * dims_out[1] * sizeof(int ));
status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data);
printf("Read Status: %d \n", status);
printf("First Three Element %d %d %d \n", dset_data[0], dset_data[1], dset_data[2]);
/* Close the dataset and dataspace */
status = H5Dclose(dataset_id);
status = H5Sclose(space_id);
status = H5Fclose(file_id);
free(dset_data);
return 0;
}
https://docs.hdfgroup.org/archive/support/HDF5/doc1.8/cpplus_RM/examples.html