一:HDF5下载、安装
链接:(
https://support.hdfgroup.org/HDF5/release/obtain518.html
)选择自己需要的版本。
二:添加包含目录、库目录、附加依赖项(根据自己的情况修改)
包含目录:D:\HDF5\1.8.19\include;
库目录:D:\HDF5\1.8.19\lib;
附加依赖项:szip.lib;zlib.lib;hdf5.lib;hdf5_cpp.lib;
三:生成;
报错LNK2001: 无法解析的外部符号 H5T_NATIVE_INT_g
解决:C/C++->预处理器添加H5_BUILT_AS_DYNAMIC_LIB
报错Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as ‘LD_LIBRARY_PATH’.
You can, at your own risk, disable this warning by setting the environment
variable ‘HDF5_DISABLE_VERSION_CHECK’ to a value of ‘1’.
之前装过Python,直接卸载Anaconda问题解决。这里有其它解决方法,但是没有尝试(
http://www.alliedjeep.com/29231.htm
)
四:成功运行一个范例
编译运行D:\HDF5\1.8.19\HDF5Examples\C\H5D\h5ex_d_rdwr.c
代码如下:
/************************************************************
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 version 1.8
************************************************************/
#include "hdf5.h"
#include <stdio.h>
#include <stdlib.h>
#define FILE "h5ex_d_rdwr.h5"
#define DATASET "DS1"
#define DIM0 4
#define DIM1 7
int
main(void)
{
hid_t file, space, dset; /* Handles */
herr_t status;
hsize_t dims[2] = { DIM0, DIM1 };
int wdata[DIM0][DIM1], /* Write buffer */
rdata[DIM0][DIM1]; /* Read buffer */
hsize_t i, j;
/*
* Initialize data.
*/
for (i = 0; i<DIM0; i++)
for (j = 0; j<DIM1; j++)
wdata[i][j] = i * j - j;
/*
* Create a new file using the default properties.
*/
file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
/*
* Create dataspace. Setting maximum size to NULL sets the maximum
* size to be the current size.
*/
space = H5Screate_simple(2, dims, NULL);
/*
* Create the dataset. We will use all default properties for this
* example.
*/
dset = H5Dcreate(file, DATASET, H5T_STD_I32LE, space, H5P_DEFAULT,
H5P_DEFAULT, H5P_DEFAULT);
/*
* Write the data to the dataset.
*/
status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,
wdata[0]);
/*
* Close and release resources.
*/
status = H5Dclose(dset);
status = H5Sclose(space);
status = H5Fclose(file);
/*
* Now we begin the read section of this example.
*/
/*
* Open file and dataset using the default properties.
*/
file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
dset = H5Dopen(file, DATASET, H5P_DEFAULT);
/*
* Read the data using the default properties.
*/
status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,
rdata[0]);
/*
* Output the data to the screen.
*/
printf("%s:\n", DATASET);
for (i = 0; i<DIM0; i++) {
printf(" [");
for (j = 0; j<DIM1; j++)
printf(" %3d", rdata[i][j]);
printf("]\n");
}
/*
* Close and release resources.
*/
status = H5Dclose(dset);
status = H5Fclose(file);
return 0;
}
结果如图: