我需要创建一个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
谢谢!
答案 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。