情况:
我需要向我的 qt 项目添加一个库(在我的例子中是 HDF5)。
我知道如何为我的目的编写足够的 C++ 代码,但我对 .pro
文件一无所知。当我尝试用谷歌搜索我的问题或添加库的一般指南时,我找到了很多答案,但没有一个能理解,因为它们需要比我拥有的更多的知识。他们说诸如“在这里和那里编译它”,“将这个和那个添加到您的系统”,“在目录 xyz 中使用 qmake”之类的话。有人可以回答这个问题,以便只知道一点 c++ 和 qt 的绿色编译和运行按钮的人理解它吗?会很棒:-)
我累的是:
我知道qt里面有个wizarb可以给项目添加库。我用它来添加所需的库。我将它们添加为“外部库”。
我试过动态或静态,我也试过只添加 hdf5.lib
或 hdf5_cpp.lib
。
问题:
当我按照上面的描述进行操作并尝试使用添加的库中的函数时,我总是会收到如下错误:undefined reference to H5::Function_Name_xyz
。
我的 .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
最佳答案
我前段时间遇到了同样的问题。我执行了以下操作来更正链接错误。
- 确保在将新库添加到 .pro 文件后运行 qmake(Build-> Run qmake)。
- 由于您使用的是带有预构建 HDF 库的 Windows,因此您应该使用 MSVC2015 32 位构建和运行工具包。预建库使用 Microsoft Visual C++ 编译器,因此要使用 HDF 库,您需要使用该编译器。
- 根据 HDF 文档,您需要先列出外部库。以下片段显示了我使用动态库的设置。
- 如果您使用动态库,请务必将
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'
关于c++ - 如何将 hdf5 添加到 Qt 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51020354/