HDF5, созданный с MS VC ++ 2008 и поддержкой 1.39.0 libs в приложении, построенном с MS VC ++ 2010 + boost 1.45.0 - PullRequest
1 голос
/ 30 октября 2011

Я обновился до MS VC ++ 2010 (Visual Studio Professional) и повысил 1.45.0, но я все еще пытаюсь использовать HDF5 1.8.4p1, созданный с MS VC ++ 2008 и повышением 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>

Нет ли у меня другого выхода, кроме сборки HDF5libs с MS VC ++ 2010 и boost_zlib 1.45?

Редактировать:

Просто хотел продолжить, что я закончил сборку HDF5 (было немного больно, но все получалось, используямаршрут CMake) на MS VC ++ 2010 и мое приложение теперь работает нормально.Еще раз спасибо.

1 Ответ

1 голос
/ 31 октября 2011

Это никогда не будет работать, разные версии boost определенно не двоично совместимы (любая библиотека, которая широко использует шаблоны C ++, скорее всего, не будет двоично совместимой с другими версиями той же библиотеки).То же самое относится и к различным версиям стандартной библиотеки C ++, поставляемой с Visual Studio.

Единственное решение - перекомпилировать HDF5 с MSVC10 и повысить 1.45.

...