Несовпадение версий библиотеки (C ++ HDF5 Windows) - PullRequest
0 голосов
/ 02 июля 2018

При попытке запустить простую программу в формате hdf5 я получаю следующие сообщения, и программа вылетает:

enter image description here enter image description here

Я нашел сообщения о других проблемах, подобных этой, но большинство из них относятся к linux и python. Я использую C ++ (Qt Creator) и Windows (Windows 7 64bit) с 64-битным компилятором MSVC17, поэтому эти решения не работают для меня.

Я не понимаю, почему это происходит, потому что я просто загрузил HDF5 версии 1.10.2 и установил его, я не знаю, почему он что-то говорит о версии 1.8.15. Откуда это могло взяться?

Я думаю, " версия библиотеки " (1.8.15) - это версия моего hdf5.lib файла, верно? Что означает " версия заголовка " (1.10.2)? Я просто #include <hdf5.h> и #include <H5Cpp.h> в main.cpp и добавил пути в файл hdf5_test_2.pro (мой проект).

Вот мой код:

hdf5_test.pro:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
        main.cpp

win32: LIBS += -L'C:/Program Files/HDF_Group/HDF5/1.10.2/lib/' -lhdf5 -lhdf5_cpp -lhdf5_hl_cpp

INCLUDEPATH += 'C:/Program Files/HDF_Group/HDF5/1.10.2/include'
DEPENDPATH += 'C:/Program Files/HDF_Group/HDF5/1.10.2/include'

win32:!win32-g++: PRE_TARGETDEPS += 'C:/Program Files/HDF_Group/HDF5/1.10.2/lib/libhdf5.lib'
else:win32-g++: PRE_TARGETDEPS += 'C:/Program Files/HDF_Group/HDF5/1.10.2/lib/liblibhdf5.a'

main.cpp:

#include <iostream>
#include <hdf5.h>
#include <H5Cpp.h>

using namespace std;
using namespace H5;

int main()
{
    hid_t   file_id;
    herr_t  status;

    file_id = H5Fcreate("file.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
    status = H5Fclose(file_id);

    cout << "Hello World!" << endl;
    return 0;
}

Пример кода, который я пытался использовать, взят из High Level Введение в HDF5 (страницы 16/17).


Решено (имеется в виду следующая ошибка)

Мне кажется, я решил проблему: в системе была установлена ​​другая версия HDF5 (1.8.15) (та, которая использовала этот компьютер до того, как я его установил).

Я сказал своей программе связать мою библиотеку (1.10.2) и передал путь, но каким-то образом он нашел ранее установленную версию 1.8.15. Теперь я сказал своей программе связать старую версию, и она сработала.

Мой hdf5_test_2.pro (мой проект) теперь выглядит так:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
        main.cpp

win32: LIBS += -LC:/Anaconda2/Library/lib/ -lhdf5 -lhdf5_cpp

INCLUDEPATH += C:/Anaconda2/Library/include
DEPENDPATH += C:/Anaconda2/Library/include

Пока хорошо, но теперь я получаю два предупреждения:

enter image description here

Есть идеи, что это значит?

...