1

我升级到 MS VC++ 2010 (Visual Studio Professional) 和 boost 1.45.0 但我仍在尝试使用用 MS VC++ 2008 构建的 HDF5 1.8.4p1 和 boost 1.39.0;一切都很好(我明确提供了我的 HDF5 lib 路径中所需的 boost_zlib-vc90*.[lib/dll])。但是当我运行时,我在 HDF5 库中收到以下运行时错误:

Unhandled exception at 0x... in <exec>: 0x... : Access violation reading location 0xffffffffffffffff 

该错误似乎与 HDF5 库明显隔离。访问冲突发生在下面函数调用内的 H5File(...) 构造函数中(我通过分成两行代码来确认它)。我也尝试更改 HDF5 文件访问标志,但无济于事:

m_file.reset(new H5::H5File(path, H5F_ACC_RDONLY));

这里 m_file 的类型是:

boost::shared_ptr<H5::H5File>

除了使用 MS VC++ 2010 和 boost_zlib 1.45 构建 HDF5 库之外,我没有其他办法了吗?

编辑:

只是想跟进一下,我最终在 MS VC++ 2010 上构建了 HDF5 库(有点痛苦,但使用 CMake 路线解决了问题),我的应用程序现在运行良好。再次感谢。

4

1 回答 1

1

这永远不会奏效,不同版本的 boost 肯定不兼容二进制(任何广泛使用 C++ 模板的库很可能与同一库的其他版本不兼容)。对于 Visual Studio 附带的不同版本的 C++ 标准库可能也是如此。

唯一的解决方案是使用 MSVC10 重新编译 HDF5 并提升 1.45。

于 2011-10-30T21:34:38.723 回答