本文主要是介绍hdf5库使用中的bug---创建文件失败H5Fcreate failed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
起因
项目组在做项目的时候使用同一个库,我使用的c++的接口H5File创建文件,关闭文件。
其他小组使用的纯c的接口,也是读取文件,关闭文件。
不关闭框架重新创建model,再打开原有的model.
再使用写出的时候就崩溃了。提示 not file create property list
解决办法
尝试初始化库H5Library::initH5cpp,termH5cpp都不行。
没有尝试H5Library::open()这个应该是可以解决
后续跟源码发现H5I_id_type_list_g使用库的时候会初始化一些默认值,这也是所有类型查询的接口。跟了多次后发现当前的值被破环了。
测试
自己写了一个数组进行观察当前存储的数量的变化,发现每次关闭的时候,当前的值就乱了。
跟踪
H5I_register_type 注册类型
H5I_clear_type 删除类型
调试发现调用了H5close释放了所有的资源,其实就是清理了H5I_id_type_list_g的数据,初始化的数据就没了,你查询的时候就会出错了。
总结
自己没有初始化的东西,h5的东西都是配套使用的,千万别关闭。
h5open()
h5close()
提示 not a property list,一般都是调用了h5close等导致的。
h5cpp中的H5::PredType::STD_I32LE这些类型也是一个个的指针,关闭后未初始化的时候就会出错。
这篇关于hdf5库使用中的bug---创建文件失败H5Fcreate failed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!