我正在尝试编译和链接一个使用 HDF5 库的项目。我正在使用 Windows 10、VS2015(C++ 编译器)和 CMake。我在链接过程中遇到问题并收到很多错误,例如
libhdf5_cpp.lib(H5Attribute.obj) : error LNK2001: unresolved external symbol _H5open
我正在编译一个 32 位应用程序,我使用 HDF5 包的 32 位预构建二进制文件。链接器正在尝试链接 libhdf5_cpp.lib 文件(根据 HDF5 主页,该文件应该是静态库)。我在编译过程中尝试了 Release 和 Debug 两种模式。我也尝试过动态链接,这导致了相同的错误消息。
我现在已经花了很多时间解决这个问题,我不确定自己能否在合理的时间内解决这个问题。有没有人对 hot 进行有什么好的建议?
是的,CMake 脚本和编译在 Linux 下运行良好,所以我猜它在某种程度上与 VS 相关。
最佳答案
对于我的问题, 首先,我下载适用于 Windows 64 的预构建 HDF5。Visual Studio 2015 我发现有两种类型的 .lib 文件 一个以前缀“lib”开头,另一个以前缀“lib”开头
我不明白其中的不同。
一开始,我链接到 C++ 的所有 .lib 文件 (不要使用 f90 fortran JAVA ...)
编译器说有重复的符号。 然后我只链接 hdf5.lib ... hdf5_cpp.lib(没有单词“lib”)在前面。 然后编译器说“Undefied external symbol” QT pro 上的命令是
INCLUDEPATH += "C:/Program Files/HDF_Group/HDF5/1.10.2/include"
LIBS += -L"C:/Program Files/HDF_Group/HDF5/1.10.2/lib"
LIBS += -lhdf5
LIBS += -lhdf5_cpp
LIBS += -lhdf5_hl
LIBS += -lhdf5_hl_cpp
LIBS += -lhdf5_tools
LIBS += -lszip
LIBS += -lzlib
... 这产生了与您相同的问题。 “编译错误”
之后我链接到 libhdf5.lib , libhdf5_cpp.lib... QT pro 上的命令是
INCLUDEPATH += "C:/Program Files/HDF_Group/HDF5/1.10.2/include"
LIBS += -L"C:/Program Files/HDF_Group/HDF5/1.10.2/lib"
LIBS += -llibhdf5
LIBS += -llibhdf5_cpp
LIBS += -llibhdf5_hl
LIBS += -llibhdf5_hl_cpp
LIBS += -llibhdf5_tools
LIBS += -llibszip
LIBS += -llibzlib
而且有效。
关于c++ - 使用静态链接编译 hdf5 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167645/