При попытке запустить простую программу в формате hdf5 я получаю следующие сообщения, и программа вылетает:
Я нашел сообщения о других проблемах, подобных этой, но большинство из них относятся к 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;
}
Пример кода, который я пытался использовать, взят из Высокий уровень Введение в 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
Пока неплохо, но теперь я получаю два предупреждения:
Есть идеи, что это значит?
Задача ещё не решена.
Других решений пока нет …