Windows10环境下Darknet YOLOv4训练时无法加载cudnn_cnn_infer64_8.dll(错误码126)问题求助
解决YOLOv4(Darknet框架)训练时
cudnn_cnn_infer64_8.dll加载失败(错误码126)的问题 这个问题我之前帮同行排查过好几次,错误码126本质是系统找不到指定的动态链接库,要么是文件缺失、路径未生效,要么是版本不匹配。结合你在Windows10+Darknet+YOLOv4的场景,给你几个针对性的排查步骤:
1. 确认CUDNN文件是否正确部署
Darknet依赖的CUDNN文件不是单独存放的,需要把CUDNN压缩包里的内容合并到CUDA的安装目录中:
- 找到你的CUDA安装根目录,默认路径是
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X(X.X是你的CUDA版本,比如11.2) - 进入
cuda\lib\x64目录,检查是否存在cudnn_cnn_infer64_8.dll文件。如果没有,说明你没正确安装CUDNN:- 下载与你的CUDA版本匹配的CUDNN压缩包
- 解压后得到
bin、lib、include三个文件夹 - 将这三个文件夹里的所有内容,分别复制到CUDA目录下的同名文件夹中(覆盖原有文件也没关系)
2. 验证环境变量配置是否生效
你提到已经添加了环境变量,但Windows的环境变量经常需要重启才能生效:
- 重启所有打开的命令行窗口、VS2019,甚至重启电脑
- 打开命令提示符,输入
echo %PATH%,查看输出中是否包含CUDA的lib\x64路径(比如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib\x64) - 建议将该路径添加到系统环境变量的
Path中,而非用户环境变量,避免权限或优先级问题
3. 检查CUDA与CUDNN的版本兼容性
Darknet对CUDA和CUDNN的版本匹配要求很严格,版本不匹配会导致dll加载失败:
- 去NVIDIA官方文档查询你当前CUDA版本对应的CUDNN版本(比如CUDA 11.0对应CUDNN 8.0.5,CUDA 11.2对应CUDNN 8.1.0)
- 如果版本不匹配,下载对应版本的CUDNN重新部署
4. 手动复制dll到关键目录
如果上面的步骤都无效,可以尝试手动放置dll:
- 将
cudnn_cnn_infer64_8.dll复制到C:\Windows\System32目录(64位系统不要放到SysWOW64) - 同时复制一份到你的Darknet可执行文件所在目录(比如
darknet.exe所在的文件夹),让程序启动时优先加载本地的dll
5. 检查VS项目的链接器配置
如果你是用VS2019编译Darknet项目,需要确认链接器配置是否正确:
- 打开项目属性,进入链接器 -> 常规,在附加库目录中添加
$(CUDA_PATH)\lib\x64 - 进入链接器 -> 输入,确认已添加
cudnn.lib、cudnn_cnn_infer.lib等依赖库
一般来说,前两步就能解决大部分问题,尤其是CUDNN未正确合并到CUDA目录或环境变量未生效的情况。
内容的提问来源于stack exchange,提问作者Кирилл Тараканов
相关产品推荐
相关产品推荐

