【问题标题】:Visual Studio 2019, Win10, and HDF5 installed using vcpkg. Unresolved external symbol H5T_IEEE_F64BE_g使用 vcpkg 安装的 Visual Studio 2019、Win10 和 HDF5。未解析的外部符号 H5T_IEEE_F64BE_g
【发布时间】:2021-08-13 22:20:02
【问题描述】:

非常感谢任何帮助。尝试在 Windows 10 上使用通过 vcpkg 和 Visual Studio 2019 安装的 HDF5 库时出现链接错误。

我使用 vcpkg 在 Windows 10 上安装了 HDF5 1.12.0: PowerShell:.\vcpkg install hdf5 hdf5:x64-windows

然后我尝试使用 Visual Studio 2019 构建使用 HDF5 的项目,但我不断收到以下 LNK2001 错误。

  • 未解析的外部符号 H5T_IEEE_F64BE_g
  • 未解析的外部符号 H5T_STD_I64BE_g
  • 未解析的外部符号 H5T_C_S1_g
  • 未解析的外部符号 H5T_NATIVE_INT_g
  • 未解析的外部符号 H5T_NATIVE_DOUBLE_g

我尝试通过直接添加 附加库目录 来解决这个问题之前,我还按照HDF5文档规定的顺序将库文件添加到附加依赖项中:

  • hdf5_hl.lib
  • hdf5.lib
  • szip.lib
  • zlib.lib

但我仍然有未解决的外部符号错误。

【问题讨论】:

    标签: visual-studio-2019 hdf5 vcpkg


    【解决方案1】:

    所有这些符号都以H5_DLLVAR 为前缀。因此,您需要显式设置预处理器定义H5_BUILT_AS_DYNAMIC_LIB如果您不使用 CMake 并且只有 MSBuild 集成 vcpkg 提供。您也可以使用 vcpkg 打开并发出问题,因为如果库是动态构建的,它应该将该定义嵌入到正确的 hdf5 标头中。

    【讨论】:

      【解决方案2】:

      我使用的 vcpkg 命令安装了库的动态版本。相反,我使用以下方法安装了库的静态版本

      ./vcpkg install hdf5:x64-windows-static
      

      不需要手动包含库目录或库本身。只需确保也运行此命令(首次安装 vcpkg 时):

      ./vcpkg.exe integrate install
      

      完成后,Visual Studio 2019 能够为我的项目正确使用 HDF5 库,并且链接器错误消失了(生成二进制文件)。

      希望这对未来的人有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-28
        相关资源
        最近更新 更多