VS2013配置HDF5

一: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;
}
  结果如图:

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇哇九号

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值