【问题标题】:Compiling a hdf5-project with static linking使用静态链接编译 hdf5 项目
【发布时间】:2017-05-01 06:16:37
【问题描述】:

我正在尝试编译和链接一个使用 HDF5 库的项目。我正在使用 Windows 10、VS2015(C++ 编译器)和 CMake。我在链接过程中遇到了很多问题,比如

libhdf5_cpp.lib(H5Attribute.obj) : error LNK2001: unresolved external symbol _H5open

我正在编译一个 32 位应用程序,并使用 HDF5 包的 32 位预构建二进制文件。链接器正在尝试链接 libhdf5_cpp.lib 文件(根据 HDF5 主页,它应该是静态库)。我在编译期间尝试了发布和调试模式。我也尝试过动态链接,这导致了相同的错误消息。

我现在已经花了相当长的时间来解决这个问题,但我不确定我是否会在合理的时间内自己解决这个问题。有没有人对hot to继续有什么好的建议?

是的,CMake 脚本和编译在 Linux 下运行良好,所以我猜它在某种程度上与 VS 相关。

【问题讨论】:

标签: c++ static-libraries hdf5


【解决方案1】:

对于我的问题, 首先,我下载适用于 Windows 64 的预构建 HDF5。Visual Studio 2015 我发现有两种类型的 .lib 文件 一个以前缀“lib”开头,另一个不带前缀“lib”

我不明白其中的不同。

一开始,我链接到所有用于 C++ 的 .lib 文件 (不要使用 f90 fortran JAVA ...)

编译器说有重复符号。 然后我只链接了 hdf5.lib ... hdf5_cpp.lib (没有单词“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        += -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

它有效。

【讨论】:

    【解决方案2】:

    这似乎与此处的问题相似:
    Linking HDF5 library into Visual C++ DLL project: unresolved external symbol __imp__*
    因此,遵循那些建议的步骤,这些步骤类似于我在来自官方 HDF5 页面帮助的评论中链接的步骤? 这里我再次引用它们:
    https://support.hdfgroup.org/HDF5/faq/windows.html#cm-runapp
    http://hdf4.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-patch1/src/unpacked/release_docs/USING_HDF5_CMake.txt

    【讨论】:

      猜你喜欢
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      相关资源
      最近更新 更多