Как добавить hdf5 в Qt-проект? - PullRequest
0 голосов
/ 25 июня 2018

Ситуация:

Мне нужно добавить библиотеку (в моем случае HDF5) в мой проект qt.

Я знаю, как достаточно кодировать c ++ для моих целей, но я понятия не имею о файле .pro.Когда я пытаюсь погуглить мою проблему или общие руководства по добавлению библиотек, я нахожу много ответов, но не понимаю ни одного из них, потому что они требуют больше знаний, чем у меня.Они говорят такие вещи, как «скомпилируйте это здесь и там», «добавьте это и это в вашу систему», «используйте qmake в каталоге xyz».Может кто-нибудь ответить на вопрос, чтобы тот, кто знает только немного о c ++ и зеленую кнопку компиляции и запуска qt, понял это?Было бы здорово: -)

То, что я устал:

Я знаю, что в qt есть мастер, который может добавлять библиотеки в проекты.Я использовал его, чтобы добавить необходимые библиотеки.Я добавил их как «внешние библиотеки».Я пробовал как динамический или статический, я пытался добавить только hdf5.lib или hdf5_cpp.lib.

Проблема:

Когда я делаю это, как я описал вышеи попробуйте использовать функцию из добавленной библиотеки, я всегда получаю ошибки, такие как: undefined reference to H5::Function_Name_xyz.

My .pro выглядит как (генерируетсяqt add-library-wizard):

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

SOURCES += \
        main.cpp


#Add external static library "hdf5.lib":
unix|win32: LIBS += -L'C:/Program Files/HDF_Group/HDF5/1.10.2/lib/' -lhdf5

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_Grou/HDF5/1.10.2/lib/hdf5.lib'


#Add external static library "hdf5_cpp.lib"
unix|win32: LIBS += -L'C:/Program Files/HDF_Group/HDF5/1.10.2/lib/' -lhdf5_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/hdf5_cpp.lib'

Использование:

  • C ++
  • Qt 5.10.1
  • MinGW 32 бита
  • HDF5 1.10.2
  • Windows 7

1 Ответ

0 голосов
/ 25 февраля 2019

У меня была такая же проблема некоторое время назад. Чтобы исправить ошибку компоновки, я сделал следующее.

  1. Убедитесь, что вы запускаете qmake (Build-> Run qmake) после добавления новой библиотеки в файл .pro.
  2. Поскольку вы используете окна с предварительно встроенной библиотекой HDF, вам следует использовать MSVC2015 32 bit Build & Run kit. В готовых библиотеках использовался компилятор Microsoft Visual C ++, поэтому для использования библиотек HDF вам потребуется этот компилятор.
  3. В соответствии с документацией по HDF, сначала нужно перечислить внешние библиотеки. Следующий фрагмент кода показывает мои настройки с использованием динамических библиотек.
  4. Если вы используете динамические библиотеки, обязательно добавьте DEFINES += H5_BUILT_AS_DYNAMIC_LIB в ваш .pro-файл.
win32: LIBS += -L$$PWD/'../../../../../Program Files/HDF_Group/HDF5/1.10.4/lib/' -lszip -lzlib -lhdf5 -lhdf5_cpp

INCLUDEPATH += $$PWD/'../../../../../Program Files/HDF_Group/HDF5/1.10.4/include'
DEPENDPATH += $$PWD/'../../../../../Program Files/HDF_Group/HDF5/1.10.4/include'
...