Я хотел бы использовать предварительно скомпилированные библиотеки HDF5 в проекте CMake, который должен быть независимым от платформы.Версия для Linux работает очень хорошо, под Windows разные проблемы возникали в разных системах.
Вопрос № 1: Проблема в Windows Server 2008, Visual Studio Ultimate 2012
На этой машине CMake 3.7.2используется для генерации проекта Visual Studio.Это работает нормально, версии 1.8.18 и 1.10.1 библиотек HDF5 установлены и найдены.Проблема возникает во время компиляции, где заголовочный файл inttypes.h не найден.Этот заголовочный файл в некоторой степени относится к стандарту C99, который не поддерживается некоторыми версиями компилятора Visual Studio.Есть ли какие-либо способы решения этой проблемы?
Вопрос № 2: Проблема в Windows 10, Visual Studio Enterprise 2017
Здесь я установил HDF5 1.10.1 и CMake 3.10 и попытался собрать свой простойпример сценария CMake:
cmake_minimum_required(VERSION 3.2.2)
project(hdf5test)
find_package(HDF5 REQUIRED COMPONENTS C CXX NAMES hdf5)
Я следовал совету в USING_HDF5_CMake.txt и установил переменную среды HDF5_DIR.Но что бы я ни пытался, ошибка:
Не удалось найти файл конфигурации для пакета "HDF5", который совместим с запрашиваемой версией "".
Были рассмотрены следующие файлы конфигурации, ноне принимается: C: / Program Files / HDF_Group / HDF5 / 1.10.1 / cmake / hdf5-config.cmake, версия: 1.10.1 (64 бита)
всегда отображается.Теперь я запутался, похоже, что CMake был на правильном пути, но по какой-то причине проигнорировал правильную библиотеку.Есть идеи, почему это происходит?
Вопрос № 3: Проблема в Windows 10 (обновление)
Мне как-то удалось получить код, компилируемый на той же машине, что и в # 2.Быстрое решение состояло в том, чтобы использовать режим модуля CMake find_package (параметр NAMES активирует этот режим, после удаления этого параметра я мог сгенерировать и построить решение Visual Studio.
Затем я добавил короткий фрагмент кода C ++, которыйсоздает файл HDF5:
#include "H5Cpp.h"
int main(void)
{
H5::H5File file("test.hdf", H5F_ACC_TRUNC);
}
Этот код компилируется, но при его запуске выдается ошибка:
Не удалось найти точку входа в процедуру H5Pset_virtual вбиблиотека динамических ссылок [...] \ hdf5_cpp.dll.
Есть идеи?
Похожие: