Windows下用MinGW构建HDF5的完整方案:CMake配置与避坑指南
简介这份HDF5 mingw版本是面向Windows环境下使用MinGW编译器进行C开发的预编译库资源。HDF5作为科学计算与数据分析领域常用的层级数据存储格式支持复杂数据类型与高效数据访问该版本针对Mingw73_32环境优化配合CMake即可快速集成到跨平台项目中免去自行编译源码的繁琐流程。压缩包共132个文件约9.42MB其中包含81个头文件、5个静态库.a、5个导入库.lib、5个动态库.dll以及23个工具可执行文件.exe另有CMake配置与pkg-config描述文件便于不同构建方式下链接使用。目前已有145人学习下载。对于需要在MinGW环境下读写HDF5文件、构建数据处理程序的开发者来说这份资源提供了可直接调用的头文件与库文件组合同时内置hdf5、hdf5_cpp等静态库版本可灵活选择静态或动态链接方式显著降低环境配置门槛适合中高级C开发者作为数据存储环节的基础组件。1. 为什么 Windows 上要用 HDF5 的 MinGW 版本一个串口数据落盘场景引出的选择有个数据采集类的项目模拟项目 X需要把高速串口数据流写成 HDF5 格式。开发环境是 Windows工具链是 MinGW-w64。跑代码时发现官方预编译的 HDF5 库是为 MSVC 准备的静态库和导入库格式对不上。折腾了一晚上才意识到需要一套“MinGW 版本的 HDF5”。这篇内容就是把这套方案讲清楚。适合谁用 MinGW 写 C/C、要在 Windows 上创建或读取 HDF5 文件的开发者或者想自编译、避免 MSVC 依赖的嵌入式/NVMe 数据采集场景。读完你能得到可复现的构建命令、CMake 集成方式以及我踩过的坑。2. 用 CMake 在 MinGW 下从源码构建 HDF5一条命令跑通与关键选项2.1 官方 tarball 与 CMake 构建的最小步骤从官网或镜像获得 HDF5 源码包例如 1.14.x。MinGW-w64 建议使用 x86_64 架构否则后面写入大数组会很麻烦。我一般把源码解压到无空格的路径例如C:\work\hdf5-1.14.x。# 在原生 Windows 命令提示符CMD中执行注意使用 MinGW-w64 的 cmake 和 gcc cmake -S C:/work/hdf5-1.14.x -B C:/work/build-mingw \ -G MinGW Makefiles \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIXC:/work/hdf5-install \ -DBUILD_SHARED_LIBSON \ -DBUILD_TESTINGOFF \ -DHDF5_BUILD_TOOLSON \ -DHDF5_BUILD_EXAMPLESOFF \ -DHDF5_BUILD_HL_LIBON \ -DHDF5_BUILD_CPP_LIBON mingw32-make -j 4 mingw32-make install逻辑说明-G MinGW Makefiles是关键的生成器它让 CMake 生成 GNU Makefile 而不是 Visual Studio 工程-DBUILD_SHARED_LIBSON表示生成动态库后面的链接部分会解释为什么推荐动态库BUILD_TESTINGOFF能省掉一多半编译时间HDF5_BUILD_HL_LIB是高层 API 库h5hl很多第三方工具链会用到HDF5_BUILD_CPP_LIB是 C 接口纯 C 项目可以关掉以缩短构建时间。cmake 配置时如果提示找不到 MinGW 生成器不要管 Fortran 之类的附带报错先确认mingw32-make和gcc都在PATH里。建议使用原生 Windows 安装的 MinGW-w64而不是只装了 MSYS2 内部包。配置完成后mingw32-make -j 4会并行编译install会把头文件、库和工具放到C:/work/hdf5-install。2.2 构建选项怎么设只开需要的能力关掉无关依赖HDF5 的 CMake 选项非常多默认的自动检测经常帮你开一堆找不到的依赖。我常用的参数组合如下表参数推荐值作用BUILD_SHARED_LIBSON生成hdf5.dll和导入库libhdf5.dll.aHDF5_ENABLE_ZLIB_SUPPORTOFF或ON开启 gzip 压缩OFF可避免外部 zlib 依赖HDF5_ENABLE_SZIP_SUPPORTOFF版权和依赖问题多默认关掉HDF5_ENABLE_THREADSAFEOFF多线程写建议ON打开后库内部加锁会牺牲性能HDF5_BUILD_TOOLSON生成h5dump等命令行工具CMAKE_C_FLAGS-O2发布优化压缩支持取决于你是否需要H5Pset_deflate。如果只是做数据落盘deflate 很有价值一个 2GB 的文本传感器数据压缩后能到 300MB。但代价是你要先编译 zlib 的 MinGW 版本。我一般用-DZLIB_ROOT指向已经用同工具链编好的 zlib或者第一次编译先关掉它跑通后再开。注意区分HDF5_ENABLE_ZLIB_SUPPORT和HDF5_ENABLE_SZIP_SUPPORTszip 是另一种压缩算法不是 deflateHDF5 高层 API 里默认不推荐。szip 在 MinGW 下经常翻车我建议直接OFF。2.3 看看构建产物.dll/.a/.lib 各是什么角色安装目录会生成include、bin、lib、share等文件夹。bin下面是hdf5.dll和h5dump.exe等工具lib下面是libhdf5.dll.a导入库和libhdf5.a静态库以及可能的libhdf5_hl.dll.a、libhdf5_cpp.dll.a。为什么这么重要MinGW 的.dll.a是“导入库”它的作用是链接期告诉链接器“这个符号在哪个 DLL 里”而不是把实现代码塞进 exe。MSVC 的.lib也可以做导入库但 MSVC 的导入库格式是 COFFGNU 链接器不认识。如果你直接拿官方预编译的 HDF5MSVC 版本里的hdf5.lib给 MinGW 用链接器会报 “file format not recognized”。这就是标题里“MinGW 版本”的核心原因你需要生成 GNU 格式的导入库和配套头文件。另一个容易误会的点静态库libhdf5.a会把代码完整编译进 exe且多个程序同时用会各自保留一份副本部署反而麻烦。我优先选动态库这样hdf5.dll可以在多个程序间共享也方便替换版本。代价是发布 exe 时要一起带上 DLL。3. 把 HDF5 接进你的 CMake 项目链接配置与最小可运行代码3.1 用 find_package 接 HDF5 还是手工指定路径HDF5 安装后会生成hdf5-config.cmake所以标准做法是find_package(HDF5)。在 MinGW 环境下关键是让它找到 MinGW 版本的库而不是 MSVC 的。cmake_minimum_required(VERSION 3.18) project(H5Demo C) set(CMAKE_C_STANDARD 11) # 指定 HDF5 安装前缀 set(HDF5_ROOT C:/work/hdf5-install CACHE PATH HDF5 install path) find_package(HDF5 REQUIRED COMPONENTS C) add_executable(demo main.c) target_link_libraries(demo PRIVATE ${HDF5_LIBRARIES}) target_include_directories(demo PRIVATE ${HDF5_INCLUDE_DIRS})逻辑说明HDF5_ROOT告诉 find_package 去哪里找hdf5-config.cmake。COMPONENTS C表示只要 C 接口减少链接负担。如果 find_package 失败CMake 会自动回退到找hdf5.h和libhdf5.*但这有可能意外匹配到 MSVC 安装的旧版本所以务必显式设置HDF5_ROOT。如果 find_package 还是失败则用手工指定set(HDF5_INCLUDE C:/work/hdf5-install/include) set(HDF5_LIB C:/work/hdf5-install/lib/libhdf5.dll.a) target_include_directories(demo PRIVATE ${HDF5_INCLUDE}) target_link_libraries(demo PRIVATE ${HDF5_LIB})参数说明手工指定时一定要用libhdf5.dll.a而不是libhdf5.a。前者是动态库导入库后者是静态库。用错了也能链接但最终 exe 运行时不会自动带上 DLL 内容反而可能出现符号重复或找不到 DLL 的怪问题。这个区别值得花一点时间理解后面会省很多事。3.2 一个能写能读的最小 C 程序验证 HDF5 能不能用最好的办法是写一个最小程序创建文件、写一个 2x2 整数数组、读出来打印。#include hdf5.h #include stdio.h int main() { hid_t file_id H5Fcreate(test.h5, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); if (file_id 0) return 1; int data[2][2] {{1, 2}, {3, 4}}; hsize_t dims[2] {2, 2}; hid_t space_id H5Screate_simple(2, dims, NULL); hid_t dset_id H5Dcreate(file_id, matrix, H5T_STD_I32BE, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); herr_t status H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); printf(write status%d\n, status); H5Dclose(dset_id); H5Sclose(space_id); H5Fclose(file_id); return 0; }逻辑说明先创建文件test.h5然后创建二维整数数据集matrix并写入。注意H5T_STD_I32BE和H5T_NATIVE_INT的区别前者指定磁盘上为大端跨平台可移植后者是当前系统原生格式。MinGW 在 x86 上基本是小端但如果文件要交换显式指定磁盘类型更专业。参数说明H5Screate_simple的第二个参数dims是数组维度第三个NULL表示不设上限H5P_DEFAULT是所有默认属性集合的简写不打算调参数时能少写很多代码。如果H5Dwrite返回负数一般是数据空间不匹配或句柄无效先检查每步返回值。读取时用H5Dread到内存再用H5T_NATIVE_INT转换。这里有个常见坑写盘类型用了H5T_STD_I32BE读出来直接配H5T_NATIVE_INTHDF5 会自动做字节序转换没问题。但如果你写的是H5T_STD_I32LE遇到别的写入者可能是 BE就会读乱。日常我建议统一用H5T_NATIVE_INT除非明确要做跨平台数据交换。3.3 动态库运行时找不到的坑PATH 与复制 DLL编译链接都成功后运行demo.exe可能会报“无法启动此程序因为计算机中丢失 hdf5.dll”。这在 Windows 上太常见了。原因是 exe 运行时按PATH和 exe 所在目录查找 DLLMinGW 构建的 exe 不会像 MSVC 那样把 DLL 路径硬编码进去。解决方式从简单到复杂把hdf5.dll复制到 exe 同目录这是最直接的。把 HDF5 安装目录的bin加入系统PATH但部署到其他机器时不方便。用 CMake 的 POST_BUILD 自动复制add_custom_command(TARGET demo POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different C:/work/hdf5-install/bin/hdf5.dll $TARGET_FILE_DIR:demo)参数说明$TARGET_FILE_DIR:demo是 CMake 生成器表达式指代 exe 输出目录copy_if_different只在文件变化时复制避免每次构建都刷新。如果你同时用了hdf5_hl.dll、hdf5_cpp.dll也需要一并复制。这个步骤最容易遗漏等到现场运行时才发现“缺库”的问题属于典型的返工项。4. HDF5 MinGW 构建的避坑指南五个典型故障与排查4.1 链接时 “undefined reference” 但明明导出了函数现象在 CMake 中链接了libhdf5.dll.a编译时头文件正常链接时报大量undefined reference to H5Fcreate之类的错误。原因最常见的是find_package(HDF5)找到了 MSVC 版本的头文件头文件中的HDF5_API宏被展开成__declspec(dllimport)。MinGW 看到dllimport后会要求从导入库中找符号但导入库本身是 GNU 格式符号匹配不上于是报未定义。解决检查头文件里的宏定义确保HDF5_BUILT_AS_DYNAMIC_LIB被正确设置。推荐在 CMake 里加add_compile_definitions(HDF5_BUILT_AS_DYNAMIC_LIB)如果还不行用nm libhdf5.dll.a | grep H5Fcreate确认符号是否存在。如果符号不存在说明构建 HDF5 时没有生成动态导出回头检查BUILD_SHARED_LIBS是否为ON。这个坑我最初踩过最后发现是find_package没设置HDF5_USE_STATIC_LIBRARIES导致库类型匹配混乱。MinGW 下要么全动态要么全静态不要混用。4.2 编译器版本不匹配用错 MinGW 子版本导致 C ABI 错乱现象C 接口的程序能跑C 接口链接hdf5_cpp在构造函数里崩溃或者std::string传出乱码。原因HDF5 的 C 库是用 g 编译的而 MinGW-w64 有posix线程模型和win32线程模型之分。比如用posix的 g 编译 HDF5 C 库你的项目却用默认的win32线程模型 g 编译标准库的std::mutex实现不同ABI 不兼容。解决确保构建 HDF5 和构建你的项目用的是同一个编译器和同一套线程模型。运行g -v查看Thread model是posix还是win32。我的规则是HDF5 用哪个编译器编的项目就用那个编译器编。所以写 CMake 时用set(CMAKE_CXX_COMPILER C:/mingw64/bin/x86_64-w64-mingw32-g.exe)指定绝对路径并且要和编译 HDF5 时完全一致。另外注意64 位 HDF5 库不能链接到 32 位项目。如果你用i686-w64-mingw32-gcc编译项目链接 64 位libhdf5.dll.a会报 “file format not recognized”这个错误比较低级但容易在“快速试一把”的时候踩到。4.3 依赖链断裂zlib/szip 在 MinGW 下的难兄难弟现象CMake 配置时提示Could NOT find ZLIB或者编译时找不到zlib.h如果开了压缩支持。原因HDF5 需要 zlib 的 MinGW 版本但很多 Windows 上现成的 zlib 预编译包是给 MSVC 用的。用 MinGW 去链接 MSVC 的zlib.lib格式不兼容如果直接下载 zlib 源码用 MinGW 编译需要额外花时间处理。解决最简单的是在构建 HDF5 时先关掉 zlib 压缩cmake -S ... -B ... -DHDF5_ENABLE_ZLIB_SUPPORTOFF等 HDF5 本体跑通了再单独解决依赖。如果必须用 zlib推荐用 vcpkg 安装 zlib 的 MinGW 版本第 6 章会讲。手动编译 zlib 也是成熟方案用同一个 MinGW 生成器编译并安装再给 HDF5 传-DZLIB_ROOT你的zlib安装目录。这里的关键是zlib 的 CMake 构建也要用-G MinGW Makefiles确保生成 GNU Makefile。如果直接用 MSYS2 里现成的 zlib但你的编译器是原生 MinGW同样会 ABi 不匹配。一句话整个依赖链必须走同一套工具链。4.4 构建过程里 “cmake -G” 指定生成器失败的玄学现象在命令行执行cmake -G MinGW Makefiles ..提示Could not create named generator MinGW Makefiles或者构建时提示sh.exe not found in PATH。原因CMake 的 “MinGW Makefiles” 生成器依赖很微妙。首先你得安装的是 MinGW-w64而不是 Cygwin 或 MSYS2 内部的 bash 环境。其次它要求能找到mingw32-make如果PATH里同时有 MSYS2 的make.exeCMake 会尝试用sh.exe执行构建命令然后报错。解决使用一个干净的 Windows 命令提示符CMD只把 MinGW-w64 的bin目录加入PATH比如C:\mingw64\bin。不要在 MSYS2 的 shell 里跑原生 CMake。如果还是报sh.exe在 CMake 配置时显式指定cmake -S . -B build -G MinGW Makefiles -DCMAKE_MAKE_PROGRAMC:/mingw64/bin/mingw32-make.exe这个坑很“玄学”同样的命令在 CMD 里能运行在 MSYS2 里就迷失在路径转换上。所以我现在的习惯是写一个脚本先set PATHC:\mingw64\bin;%PATH%再执行 cmake。4.5 头文件路径混乱include 了源码目录还是安装目录现象编译时出现hdf5.h: No such file或者编译通过但函数签名对不上比如H5Fcreate的参数数量不对。原因HDF5 源码根目录下也有一个hdf5.h它和安装目录里的头文件不同。源码里的头文件需要配合一大批内部头文件才能正常 include如果你把源码根目录加到 include 路径就可能误用了开发版本的头文件而链接的却是安装好的库。解决永远把CMAKE_INSTALL_PREFIX下的include放在第一位。在 CMake 里检查message(STATUS HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})确保它指向C:/work/hdf5-install/include。如果指向源码目录在find_package之前设置HDF5_ROOT为安装根。另一个相关坑安装目录的include下有H5pubconf.h它由配置阶段生成包含很多关键宏。如果这个文件没被找到会看到大量“缺少宏定义”错误所以make install这一步不能省略。5. 验证你的 MinGW 版 HDF5 可用性从文件回读到内存泄漏检查5.1 用 h5dump 验证文件结构安装目录的bin下有h5dump.exe。运行h5dump test.h5输出会列出数据集名称、类型、尺寸和数据。如果输出正常说明 HDF5 核心写入正确。调试时很有用的还有-H参数只显示头信息h5dump -H test.h5参数说明-H只显示头信息不显示数据适合快速确认数据集结构。h5dump由HDF5_BUILD_TOOLSON生成。如果构建时没开这个选项可以用别的工具但h5dump是最顺手的。典型输出包括HDF5 test.h5 { GROUP / { DATASET matrix { DATATYPE H5T_STD_I32BE } } }验证要点确认DATATYPE和你写入的类型匹配。如果你写的是H5T_NATIVE_INT在 x86 上会显示H5T_STD_I32LE这是正常的。5.2 写一段回归测试同时验证 C 和 C 接口我习惯在项目里加一个h5_smoke_test.c只做“写-读-比对”三件事。这个测试可以放进本地脚本也可以作为集成测试的一部分。#include hdf5.h #include assert.h #include string.h int main() { const char* fname smoke.h5; int write_buf[4] {1, 2, 3, 4}; hsize_t dims[1] {4}; hid_t file H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); assert(file 0); hid_t space H5Screate_simple(1, dims, NULL); hid_t dset H5Dcreate(file, data, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); assert(H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, write_buf) 0); H5Dclose(dset); H5Sclose(space); H5Fclose(file); file H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT); dset H5Dopen(file, data, H5P_DEFAULT); int read_buf[4] {0}; H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, read_buf); assert(memcmp(write_buf, read_buf, sizeof(write_buf)) 0); H5Dclose(dset); H5Fclose(file); return 0; }逻辑说明这个测试覆盖了文件创建、数据集创建、写入、关闭、重新打开、读取、比较。assert在调试版本里有效足够暴露问题。如果这一步就挂不用继续往下排查说明 HDF5 库本身有问题回到第 2 章重新构建。5.3 在项目里做内存与线程检查另一个验证维度是内存安全。MinGW 下可以用gcc的地址消毒器ASan来编译你的程序但需要确认 HDF5 库也是用-fsanitizeaddress编译的否则 ASan 只能检查你自己的代码。我一般用更轻量的方法在 Debug 构建里开 HDF5 的错误回调让它把运行时错误打印出来。线程方面如果你的数据采集是多线程写入的建议做一个小压力测试4 个线程同时打开同一个 HDF5 文件、写入不同数据集。注意HDF5 默认不是线程安全的除非构建时开了HDF5_ENABLE_THREADSAFE。多线程并发写文件会数据损坏或崩溃。我的习惯是先不加锁用单线程方案确认逻辑正确再决定是否开线程安全。开线程安全会损失一部分性能但换来稳定。6. 一个更顺手的做法用 vcpkg 安装 HDF5 的 mingw 版本如果你不想自己啃源码构建还有一个更顺手的路线vcpkg。vcpkg 里提供了 HDF5 的 port并且支持 MinGW 三元组triplet。我最近几个项目都用这条路径尤其当 zlib、szip 依赖链变得复杂时vcpkg 会自动把所有依赖用 MinGW 编译好免去第 4 章那些互相匹配的问题。vcpkg install hdf5:x64-mingw-dynamic这条命令让 vcpkg 以x64-mingw-dynamic三元组编译并安装 HDF5。三元组里x64表示目标架构mingw表示使用 MinGW-w64 工具链dynamic表示生成动态库。如果你想要静态链接可以用x64-mingw-static但动态库在 Windows 上更新 HDF5 版本时更方便。安装完成后头文件在installed/x64-mingw-dynamic/include库文件在.../libDLL 在.../bin。接着在项目 CMake 中接入 vcpkg 的 toolchaincmake -S . -B build \ -DCMAKE_TOOLCHAIN_FILEC:/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DVCPKG_TARGET_TRIPLETx64-mingw-dynamic这里的CMAKE_TOOLCHAIN_FILE会全局接管编译器和库查找不需要再设置HDF5_ROOT。VCPKG_TARGET_TRIPLET必须和安装时一致否则 CMake 会去别的目录找库然后报“无法打开 hdf5.lib”之类的错误。vcpkg 路径最好是无空格纯英文比如C:\vcpkg中文路径容易让工具链脚本死在路径编码上。vcpkg 方案也有边界它选定的 HDF5 版本由 port 维护你没法临时改某个编译选项。比如想开HDF5_ENABLE_THREADSAFE就得修改 port 文件或走源码编译。另外vcpkg 默认会编译 release 和 debug 两套库磁盘空间紧张时可以加-DVCPKG_BUILD_TYPErelease只编 release。我现在遇到 MinGWHDF5 的需求会先跑一遍 vcpkg如果能把 demo 编过就直接用如果卡在 vcpkg 的某个编译错误超过 30 分钟就切回源码 CMake 那条路。这个判断帮我减少了很多无谓的折腾。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

专科生毕业论文AI工具测评:从选题到降重全流程拆解

专科生毕业论文AI工具测评:从选题到降重全流程拆解

专科生写论文这件事,放到网上一搜,冒出来最多的就是"AI论文写作软件"和"一键生成论文"这俩词。作为一个带过不少专科毕业设计的人,我可以直接告诉你:那些号称"一键生成"的,十个里有九个…

2026/10/17 1:06:15 阅读更多 →
ARM裸机开发:软件中断SWI从原理到系统调用实现

ARM裸机开发:软件中断SWI从原理到系统调用实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 1:06:15 阅读更多 →
储能电池均衡方案选型与实现:MP2642GR-Z与PIC18F66K40硬件软件全解析

储能电池均衡方案选型与实现:MP2642GR-Z与PIC18F66K40硬件软件全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 1:05:15 阅读更多 →

最新新闻

Lokinet多平台部署实战:Windows、Linux、MacOS完整安装教程

Lokinet多平台部署实战:Windows、Linux、MacOS完整安装教程

Lokinet多平台部署实战:Windows、Linux、MacOS完整安装教程 Lokinet是一个匿名、去中心化且基于IP的互联网覆盖网络,让用户能够在保护隐私的同时安全地访问互联网。本教程将详细介绍如何在Windows、Linux和MacOS三大主流操作系统上部署Lokinet&#xff…

2026/10/17 1:48:27 阅读更多 →
软考 系统架构设计师历年真题集萃(154)

软考 系统架构设计师历年真题集萃(154)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(153) 第291题 EJB是企业级Java构件,用于开发和部署结构的、分布式的、面向对象的Java应用。其中,()负责完成服务端与客户端的交互;()用于数据持久化来简化数据库开发工作;()主要用来处理并发和异步访问操作…

2026/10/17 1:48:27 阅读更多 →
就地型馈线自动化技术原则与整定避坑指南:四种模式详解

就地型馈线自动化技术原则与整定避坑指南:四种模式详解

简介:这份名为《附件8:就地型馈线自动化技术原则(试行)》的技术文档,系统阐述了自适应综合型馈线自动化技术,面向配电网规划运行、自动化改造及运维检修人员,重点解决多分支多联络配电网中故障定…

2026/10/17 1:48:27 阅读更多 →
Spark-X2.5 全面解析:4B 参数 + 1M 上下文 + 200 语言,端侧 Agent 模型新王如何炼成

Spark-X2.5 全面解析:4B 参数 + 1M 上下文 + 200 语言,端侧 Agent 模型新王如何炼成

【免费下载链接】Spark-X2.5-4B-FP8 项目地址: https://ai.gitcode.com/SparkLLM/Spark-X2.5-4B-FP8 点击查看 免费下载 Spark-X2.5-4B-FP8 是一款面向端侧部署的 4B 参数大语言模型,原生支持 1M token 上下文窗口和 200 多种语言,主打 Agen…

2026/10/17 1:48:27 阅读更多 →
CKEditor 4 在 iOS 移动端工具栏按钮 Hover 样式的正确修复与手动验收测试指南

CKEditor 4 在 iOS 移动端工具栏按钮 Hover 样式的正确修复与手动验收测试指南

前端UI组件 【免费下载链接】ckeditor4 The best enterprise-grade WYSIWYG editor. Fully customizable with countless features and plugins. 项目地址: https://gitcode.com/gh_mirrors/ck/ckeditor4 点击查看 免费下载 导读 本文基于 CKEditor 4 官方仓库中的…

2026/10/17 1:48:27 阅读更多 →
云上运维系统学习路线:VPC、Terraform与K8s实操指南

云上运维系统学习路线:VPC、Terraform与K8s实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 1:47:27 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →