HDF5构建与MS vc++ 2008和boost 1.39.0 lib在应用程序中构建与MS vc++ 2010 +

HDF5 built with MS VC++ 2008 and boost 1.39.0 libs in application built with MS VC++ 2010 + boost 1.45.0

本文关键字:MS vc++ 构建 应用程序 2010 lib 2008 boost HDF5      更新时间:2023-10-16

我升级到MS vc++ 2010 (Visual Studio Professional)和boost 1.45.0,但我仍然试图使用HDF5 1.8.4p1与MS vc++ 2008和boost 1.39.0构建;一切都可以正常构建(我显式地提供了boost_zlib-vc90*)。[lib/dll]需要在我的HDF5 lib路径)。但是当我运行时,我在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库之外,我没有其他追索权吗?

编辑:

只是想跟进,我最终建立了HDF5库(有点痛苦,但事情解决了使用CMake路由)在MS vc++ 2010和我的应用程序现在工作得很好。再次感谢。

这是行不通的,不同版本的boost绝对不是二进制兼容的(任何广泛使用c++模板的库都很可能与同一库的其他版本不二进制兼容)。对于visual studio附带的不同版本的c++标准库,可能也是如此。

唯一的解决方案是用MSVC10和boost 1.45重新编译HDF5。