Visual Studio 2019, Win10 и HDF5 установлены с помощью vcpkg. Неразрешенный внешний символ H5T_IEEE_F64BE_g

#visual-studio-2019 #hdf5 #vcpkg

Вопрос:

Мы очень ценим любую помощь. У меня возникают ошибки ссылок при попытке использовать библиотеки HDF5, установленные с помощью vcpkg с Visual Studio 2019 в Windows 10.

Я установил HDF5 1.12.0 в Windows 10 с помощью vcpkg: 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

Я попытался решить эту проблему, напрямую добавив дополнительные каталоги библиотек, которые находятся в разделе vcpkg/пакеты/ для HDF5, SZIP и ZLIB, которые были автоматически установлены в рамках шага установки HDF5, указанного ранее, а также я добавил файлы библиотек в дополнительные зависимости в порядке, установленном документацией HDF5:

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

Но у меня все еще есть нерешенные ошибки внешнего символа.

Ответ №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 для моего проекта, и ошибка компоновщика исчезла (был создан двоичный файл).

Надеюсь, это поможет кому-нибудь в будущем!