0
我试图用C++ API将我的化合物数据类型逐个写入我的文件。我在Win64上使用HDF5-1.8.18。HDF5 - 用Hyperslab逐一写入/附加HDF5复合数据类型?
我想写我的复合数据类型对象一个接一个。我有几种化合物类型,它们不会进入“堆叠式”缓冲区,它们只是一个接一个“到达”。当我尝试写入选定的Hyperslab时,我的代码失败。
我希望我的Hyperslab从数据集中一次只选择一个化合物数据类型的元素。在这个测试代码中,我总是希望写入索引3.显然,稍后我将从静态索引切换到计数器变量。
我的数据空间是一维的:
- 评级= 1
- 暗淡=数据对象的次数(例如:213)
我用写我的数据的代码:
H5::CompType compType = group->openCompType("tTestData");
H5::DataSpace fspace1 = dataset->getSpace();
hsize_t start[] = {3};
hsize_t stride[] = {1};
hsize_t count[] = {1};
hsize_t block[] = {1};
fspace1.selectHyperslab(H5S_SELECT_SET, count, start, stride, block);
dataset->write(&myTestData, compType, fspace1);
抛出的异常是:
HDF5-DIAG: Error detected in HDF5 (1.8.18) thread 0:
#000: ..\..\hdf5-1.8.18\src\H5Dio.c line 271 in H5Dwrite(): can't prepare for
writing data
major: Dataset
minor: Write failed
#001: ..\..\hdf5-1.8.18\src\H5Dio.c line 352 in H5D__pre_write(): can't write
data
major: Dataset
minor: Write failed
#002: ..\..\hdf5-1.8.18\src\H5Dio.c line 697 in H5D__write(): src and dest dat
a spaces have different sizes
major: Invalid arguments to routine
minor: Bad value
如何调整我的Hyperslab以便能够一次写入一个复合数据类型对象?似乎我需要调整我传递给selectHyperslab
的变量,但我不确定要传递哪些参数?