H5Dwrite(): file selection+offset not within extent
时间: 2024-02-01 10:12:14 浏览: 25
这个错误通常是由于在写入HDF5文件时使用了超出文件大小范围的选择器和偏移量导致的。也可能是由于没有正确初始化数据集或数据空间而导致的。
您可以检查您的选择器和偏移量是否正确,并确保它们不超出文件大小范围。如果您使用的是动态创建的数据集,请确保正确设置数据集大小和空间。
此外,您还可以检查您的HDF5库版本,以确保它是最新版本。如果问题仍然存在,请提供更多信息,例如您的代码段和HDF5文件的结构,以便更好地帮助您解决问题。
相关问题
使用// 第一次 { mat_t* mat = Mat_CreateVer("D:/MatioTest/test.mat", NULL, MAT_FT_MAT73); size_t dims[2] = { 60000, 16 }; matvar_t* newVar = Mat_VarCreate("data",matio_classes::MAT_C_SINGLE, matio_types::MAT_T_SINGLE, 2, dims, newData, 0); int success = Mat_VarWriteAppend(mat, newVar,MAT_COMPRESSION_NONE,2); qDebug()<<success; } // 第二次 { mat_t* mat = Mat_Open("D:/MatioTest/test.mat",MAT_ACC_RDWR); size_t dims[2] = { 190000, 16 }; matvar_t* newVar = Mat_VarCreate("data",matio_classes::MAT_C_SINGLE, matio_types::MAT_T_SINGLE, 2, dims, newData1, 0); int success = Mat_VarWriteAppend(mat, newVar,MAT_COMPRESSION_NONE,2); qDebug()<<success; Mat_Close(mat); } 第二次追加数据报错 H5Dwrite(): file selection+offset not within extent
这个错误可能是因为你在第二次追加数据时,指定的偏移量超出了文件的范围。你可以尝试在第二次追加数据之前,先使用Mat_VarRead来读取文件中的数据,并获取文件中已有数据的维度信息,然后根据这些信息来计算新数据的偏移量。具体实现可以参考以下示例代码:
```
mat_t* mat = Mat_Open("D:/MatioTest/test.mat",MAT_ACC_RDWR);
matvar_t* var = Mat_VarRead(mat, "data");
if (var == NULL) {
// error handling
}
size_t* dims = var->dims;
size_t offset = dims[0] * dims[1]; // 计算偏移量
Mat_VarFree(var);
size_t newDims[2] = { 190000, 16 };
matvar_t* newVar = Mat_VarCreate("data",matio_classes::MAT_C_SINGLE, matio_types::MAT_T_SINGLE, 2, newDims, newData1, 0);
int success = Mat_VarWriteAppend(mat, newVar,MAT_COMPRESSION_NONE,offset);
qDebug()<<success;
Mat_Close(mat);
```
在上面的代码中,我们首先使用Mat_VarRead函数读取文件中的数据,并获取其维度信息。然后根据已有数据的维度信息计算新数据的偏移量,最后使用Mat_VarWriteAppend函数追加新数据,并将偏移量作为参数传递给该函数。
dx12+dwrite
DirectX 12 (DX12) 是微软推出的一种图形应用程序接口(API),用于游戏和图形应用程序的开发。它提供了更低的开销和更高的性能,使开发者能够更好地利用硬件资源。
DWrite 是 DirectX 中的一个组件,全称为 DirectWrite。它是一种用于处理文本和字体渲染的 API。DWrite 提供了高质量的文本布局和渲染功能,可以用于创建各种字体效果和排版样式。
结合使用 DX12 和 DWrite,开发者可以在游戏或图形应用程序中实现高性能的文本渲染。通过 DX12,开发者可以更好地控制硬件资源的使用,提高渲染效率。而 DWrite 则提供了丰富的文本布局和渲染功能,使得开发者可以实现各种字体效果和排版样式。