問題:我想爲我們的單元測試使用內存映射的HDF5文件。是否有可能從頭開始創建它們?使用文件映像操作(內存映射的hdf5文件)從頭開始創建hdf5文件
Status:我讀過HDF5文件映像操作document,並試圖應用它。根據使用的確切參數,我得到一個無效的文件標識符(-1),或者後續的數據集創建失敗。
通常我們的單元測試會寫入新的測試文件,模擬用戶將新創建的數據保存到磁盤上的文件。所以還沒有一個現有的文件。在閱讀hdf5文件映像操作的文檔時,假定設置了初始文件映像。我沒有 - 因爲我試圖通過測試儘可能地接近實際的用戶場景。這樣的文件可以從一個空的緩衝區創建嗎?
static const unsigned int FileSize = 1024 * 1024 * 100;
std::vector<unsigned char> buffer(FileSize, 0); // initialize buffer with zeroes
int flags = H5LT_FILE_IMAGE_DONT_COPY |
H5LT_FILE_IMAGE_OPEN_RW |
H5LT_FILE_IMAGE_DONT_RELEASE;
m_file = H5LTopen_file_image(static_cast<void*>(buffer.data()), buffer.size(), flags);
如果想保持緩衝區的所有權,如示例中我沒有得到有效的文件ID。我懷疑是HDF5中的一個bug,但不幸留下了標誌H5LT_FILE_IMAGE_DONT_COPY | H5LT_FILE_IMAGE_DONT_RELEASE輸出也沒有工作。