解决 “Could not locate zlibwapi.dll” 错误全流程分析
在使用 ONNX Runtime(或其他深度学习库)进行推理时,可能会遇到如下错误:
"Could not locate zlibwapi.dll. Please make sure it is in your library path!"
这个错误的根本原因是程序找不到 zlibwapi.dll,它是 zlib 压缩库的一部分,用于处理 数据压缩和解压缩。ONNX Runtime 和许多其他深度学习框架依赖这个库来加载和处理模型文件。因此,确保 zlibwapi.dll 被正确加载是非常重要的。
一、为什么需要 zlibwapi.dll?
zlibwapi.dll 是 Windows 平台上 zlib 压缩库的动态链接库(DLL)。zlib 库广泛应用于数据压缩和解压缩工作,许多深度学习框架,如 ONNX Runtime,需要它来加载压缩格式的模型或权重文件。
-
ONNX 模型文件:ONNX 模型文件通常会进行压缩,以节省存储空间或加速下载。
zlibwapi.dll负责解压这些文件,以便模型能够被加载到内存中进行推理。 -
优化存储:为了减小文件大小,很多深度学习框架将模型文件进行压缩,
zlibwapi.dll提供了处理压缩和解压缩的功能。
因此,缺少 zlibwapi.dll,你的程序将无法正确加载压缩的模型文件,进而导致运行时错误。
二、如何解决“找不到 zlibwapi.dll”错误?
下载并放置 zlibwapi.dll和zlibwapi.lib
可以从下面这个链接进行下载:
http://www.winimage.com/zLibDll/zlib123dllx64.zip

下载后,将两个文件放置到以下路径之一:
2.1 将 zlibwapi.dll 放入与可执行文件同级目录
最简单的解决方法是,将zlibwapi.dll和zlibwapi.lib文件放入与 程序可执行文件(例如 SR.exe)所在的同一目录下。这样,系统在启动程序时就会自动加载 zlibwapi.dll。
2.2 将 zlibwapi.dll和zlibwapi.lib放入系统 PATH 目录
另一种方法是将 zlibwapi.dll 放入系统的 bin以及将 zlibwapi.lib 放入系统的 lib目录,或者直接将它所在的目录添加到系统的 PATH 环境变量 中。这样,系统会在任何位置运行程序时都能找到 zlibwapi.dll,避免在不同目录下都需要拷贝 DLL 文件。
如果使用的是 CUDA,可以将 zlibwapi.dll 放在 CUDA 的 bin 目录,将 zlibwapi.lib 放入 CUDA 的 lib目录 中,例如:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.x\bin
