[英]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(Visual Studio Professional)并增强了1.45.0,但我仍在尝试使用由MS VC ++ 2008和boost 1.39.0构建的HDF5 1.8.4p1; 一切正常(我在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路由解决了问题),我的应用程序现在可以正常工作了。 再次感谢。
这永远都行不通,因为boost的不同版本肯定不是二进制兼容的(任何广泛使用C ++模板的库很可能与同一库的其他版本都不兼容)。 假定Visual Studio附带的不同版本的C ++标准库也是如此。
唯一的解决方案是用MSVC10重新编译HDF5,并提高1.45。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.