3

我目前在 Windows 7 64 位上使用 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::strings 的解决方案。我将不胜感激任何可以帮助我解决这个问题的想法。

4

2 回答 2

1

我也有同样的问题,并通过将我所有的 std::string 或 h5std_string 更改为字面意思来修复它:

5File file("myFile.h5", H5F_ACC_TRUNC);

或使用string.c_str()将字符串更改为const char.

于 2016-07-07T19:09:28.730 回答
0

我有完全相同的问题。解决方案是,我在 Visual Studio 中处于调试模式,而我链接的库是在发布模式下构建的。当我在 Visual Studio 中切换到发布模式时,上述错误消失了。

于 2016-04-21T20:08:36.740 回答