使用H5Cpp.h头文件编译C ++程序

时间:2017-03-29 17:22:32

标签: c++ macos hdf5

我需要创建一个HDF5文件。我正在使用H5Cpp.h头文件。 我正在尝试在OSX 10.11 El Capitan上编译下面的C ++代码。

#include "include/hdf5-1.10.0-patch1/c++/src/H5Cpp.h"
using namespace H5;

const int NX = 5;
const int NY = 5;
const H5std_string  FILE_NAME( "SDS.h5" );
const H5std_string  DATASET_NAME( "IntArray" );

int main(){
  int i, j;
  int data[NX][NY];          // buffer for data to write
  for (j = 0; j < NX; j++){
    for (i = 0; i < NY; i++)
      data[j][i] = i + j;
  }
  H5File file(FILE_NAME, H5F_ACC_TRUNC);
  hsize_t dimsf[2] = {NX, NY};
  DataSpace dataspace(2, dimsf);
  DataSet dataset = file.createDataSet(DATASET_NAME, PredType::NATIVE_INT,
                       dataspace);
  // Attempt to write data to HDF5 file
  dataset.write(data, PredType::NATIVE_DOUBLE);
  return 0;  
}

我一直收到这个错误,

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [all] Error 1

这是详细输出 - https://gist.github.com/gkarthik/e21d2f83baffc2d2eb1b883696c44df8

谢谢!

1 个答案:

答案 0 :(得分:0)

一些提示:

  • 如果您没有预先构建的二进制文件,我认为您必须自己编译HDF5库。在HDF5网站上,没有预先构建的Mac二进制文件(据我所见)。

  • 在Windows中,要编译C ++应用程序以使用HDF5库,您必须向链接器指示以下依赖项(按此顺序),也许在mac中也是必要的: szip.lib zlib.lib hdf5.lib hdf5_cpp.lib

  • 如果您下载了一些预先构建的二进制文件,则会有一个文件指示编译C ++程序的步骤。在Windows中,它被称为:&#34; USING_HDF5_CMake.txt&#34;和&#34; USING_HDF5_VS.txt&#34;。您可以找到这些文件,例如here