How to add an hdf5 to a Qt-Project?

感情迁移 提交于 2019-12-25 01:08:53

问题


Situation:

I need to add a library (HDF5 in my case) to my qt project.

I know how to code c++ enough for my purposes, but i have no clue about the .pro file. When i try to google my problem or general guides for adding libraries i find lots of answers but understand none of them, because they require more knowledge then i have. They say stuff like "compile it here and there", "add this and that to your system", "use qmake in directory xyz". Can someone please answer the question so that one who only knows a bit of c++ and the green compile & run button of qt understands it? Would be great :-)

What I tired:

I know that there is a wizarb in qt that can add librarys to projects. I used it to add the libraries needed. I added them as "external librarys". I tried as dynamic or static, i tried adding only the hdf5.lib or the hdf5_cpp.lib too.

Problem:

When I do it as I described above and try to use a function from the added library i always get errors like: undefined reference to H5::Function_Name_xyz.

My .pro looks like (generated by the 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'

Using:

  • C++
  • Qt 5.10.1
  • MinGW 32bit
  • HDF5 1.10.2
  • Windows 7

回答1:


I had this same issue awhile back. I did the following to correct the linking error.

  1. Make sure you run qmake (Build-> Run qmake) after adding a new library to the .pro file.
  2. Since you are using windows with the pre-built HDF library, you should use the MSVC2015 32 bit Build&Run kit. The pre-built libraries used Microsoft Visual C++ compiler, so to use the HDF libraries you will need to use that compiler.
  3. Per the HDF documentation, you need to list the external libraries first. The following snippit shows my setup using dynamic libraries.
  4. If your using dynamic libraries be sure to add DEFINES += H5_BUILT_AS_DYNAMIC_LIB to your .pro file.
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'


来源:https://stackoverflow.com/questions/51020354/how-to-add-an-hdf5-to-a-qt-project

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!