我想在应该独立于平台的 CMake 项目中使用预编译的 HDF5 库。Linux 版本运行良好,在 Windows 下不同系统会出现不同的问题。
问题 #1:Windows Server 2008、Visual Studio Ultimate 2012 上的问题
在这台机器上,使用 CMake 3.7.2 生成 Visual Studio 项目。这很好,安装并找到了 HDF5 库的 1.8.18 和 1.10.1 版本。问题出现在编译过程中,找不到头文件 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 (64bit)
总是出现。现在我很困惑,看起来 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);
}
这段代码可以编译,但是当我运行它时,它给了我错误:
无法在动态链接库 [...]\hdf5_cpp.dll 中找到过程入口点 H5Pset_virtual。
有任何想法吗?
有关的: