Hi,
I'm in the process to upgrade our application from 1.6.5 to 1.8.6. I have noticed the constructor of H5::DataType (hitd_t existing_id, bool predefined) has changed to H5::DataType (hitd_t existing_id). The interface changes do make sense from the point view of users, however I have problem to create an object with the predefined datatype - Here is a very simple example:
#include <H5cpp.h>
int main ()
{
H5::DataType (H5::H5T_NATIVE_FLOAT);
return 0;
}
The destructor complains with the following errors:
DataType::~DataType - H5Tclose failed
HDF5-DIAG: Error detected in HDF5 (1.8.6) thread 140429119538976:
#000: H5T.c line 1723 in H5Tclose(): immutable datatype
major: Invalid arguments to routine
minor: Bad value
DataType::~DataType - H5Tclose failed
I also tried to the following code:
#include <H5cpp.h>
int main ()
{
H5::DataType (H5::PredType::NATIVE_FLOAT);
return 0;
}
The code works for 1.8.6 but not 1.6.5 unfortunately.
Here are the errors when trying to insert the object to a compound datatype.
HDF5-DIAG: Error detected in HDF5 library version: 1.6.5 thread 3077396992. Back trace follows.
#000: H5Tcompound.c line 351 in H5Tinsert(): not a datatype
major(01): Function arguments
minor(03): Inappropriate type
H5Tinsert failed
Could anyone please instruct a proper way to construct H5::DataType with the predefined datatype? It'd be nice if the code can work in both 1.6.5 and 1.8.6.
Thanks,
Zane