В настоящее время я использую hdf5 1.8.15 на Windows 7 64bit.
Исходный код моего программного обеспечения сохраняется в файлах с использованием кодировки utf8.
Как только я вызываю любую функцию hdf5, поддерживающую std :: string, вывод становится загадочным
Но если я использую const char*
вместо std::string
все работает нормально. Это относится и к имени файла.
Вот краткий пример:
std::string filename_ = "test.h5";
H5::H5File file( filename_.c_str(), H5F_ACC_TRUNC); // works
H5::H5File file( filename_, H5F_ACC_TRUNC); // filename is not readable or
// hdf5 throws an exception
Я предполагаю, что эта проблема вызвана различными кодировками, используемыми в моих исходных файлах и hdf5. Но я не уверен в этом и не нашел решения, позволяющего использовать std::string
s. Буду признателен за любую идею, которая поможет мне в этом вопросе.
У меня также была та же проблема, и я исправил ее, изменив все мои std :: string или h5std_string на буквально:
5File file("myFile.h5", H5F_ACC_TRUNC);
Или использовать string.c_str()
изменить строку на const char
,
У меня была точно такая же проблема. Решением было то, что я был в режиме отладки в Visual Studio, тогда как библиотеки, с которыми я связывался, были собраны в Release-Mode. Когда я переключился в Visual Studio в Release-Mode, вышеуказанная ошибка исчезла.