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

标签 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

谢谢!

最佳答案

一些提示:

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

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

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

关于c++ - 使用H5Cpp.h头文件编译C++程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100152/

相关文章:

c++ - 确定最佳转换的 Variadic 模板

c++ - initializer_list 与 2013 中的双重删除

c++ - 如何使用 C++ 一次解码一帧 AAC?

python - 为什么 h5py 在向数据集中添加 3 个可变长度字符串时会抛出错误?

c++ - 我如何强制 boost::asio 优先完成 async_write 调用而不是运行其他处理程序?

java - 应用程序应将其日志存储在 Mac OS 中的什么位置?

bash - macos 下 bash 中连接变量时避免使用空格

iphone - iPhone SDK 上的 sqlite3 错误 "not an error"

file - 如何使用python读取 'family'的h5文件?

python - Hdf5 文件中未显示列