我目前在Windows 7 64bit上使用hdf5 1.8.15。 我的软件的源代码使用utf8编码保存在文件中。
只要我调用任何支持std :: string的hdf5函数,输出就会变得神秘
但如果我使用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的解决方案。我很感激能帮助我解决这个问题的任何想法。
答案 0 :(得分:1)
我也有同样的问题,并通过改变我的所有std :: string或h5std_string来修复它:
5File file("myFile.h5", H5F_ACC_TRUNC);
或使用string.c_str()
将字符串更改为const char
。
答案 1 :(得分:0)
我有完全相同的问题。解决方案是,我在Visual Studio中处于调试模式,而我链接的库是在发布模式下构建的。当我将Visual Studio切换到Release-Mode时,上述错误消失了。