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
的變量,但我不確定要傳遞哪些參數?