原文地址:https://blog.lanweihong.com/p…
谬误形容
我在应用 VS 2015 编译 darknet
我的项目时报如下谬误:
Github 相干 issues: darknet build error MSB3721。
尝试解决
1. 批改 darknet.vcxproj
文件中 Code Generation
的值,即 compute_75,sm_75
(未解决)
按在网上找到解决办法 VS2015 配置 darknet 我的项目时遇到 MSB3721 的解决办法 尝试解决。
- 批改
darknet.vcxproj
文件中的两处Code Generation
,将compute_86,sm_86
(网上说的compute_75,sm_75
,我这里是compute_86,sm_86
)批改为compute_52,sm_52
;批改后残缺的值为compute_30,sm_30;compute_52,sm_52
。
这里的 compute_52,sm_52
是通过计算得进去的值,可能每个用户的显卡不一样,值也不一样,我的显卡是 GTX 1050Ti,这里用 “52”,其余型号的显卡请查看英伟达的 GPU 算力表,地址是:https://developer.nvidia.com/…。
- 在 VS 2015 的 “darknet 属性页 ” 窗口中,批改
Code Generation
的值为compute_30,sm_30;compute_52,sm_52
;
- 在 VS 2015 中从新生成
darknet
,发现还是 生成失败,还是报 MSB 3721 谬误。
2. 删除 Code Generation
中的 compute_75,sm_75
(未解决)
- 编辑
darknet.vcxproj
,将Code Generation
中的compute_75,sm_75
删掉; - 同样的,在 VS 2015 的 “darknet 属性页 ” 窗口中,将
compute_75,sm_75
删掉; - 在 VS 2015 中从新生成
darknet
,发现还是 生成失败,还是报 MSB 3721 谬误。
3. 删除 Code Generation
选项(未解决)
编辑 darknet.vcxproj
文件,删除 Code Generation
这项参数,留神的是删除后,darknet
会默认设置该参数值为 compute_52,sm_52
,这个在从新生成 darknet
后代码输入中可看到。
从新生成 darknet
,发现还是 生成失败,还是报 MSB 3721 谬误。
4. 批改 OpenCV 版本为 3.4.14(未解决)
在 OpenCV 官网下载页 下载 “3.4.14” 版本后,重新部署,而后从新生成 darknet
,发现还是 生成失败,还是报 MSB 3721 谬误。
5. 重新安装 CUDA(未解决)
重新安装 CUDA 后,再次从新生成 darknet
,发现还是 生成失败,还是报 MSB 3721 谬误。
不过在重装 CUDA 过程中,NVIDIA Installer
提醒 “Nsight for Visual Studio 2019 will not be installed,Nsight for Visual Studio 2017 will not be installed” 之类的信息让我有了思路:我要不装置个 VS 2019 试试?
6. 装置 Visual Studio 2019,应用其编译(已解决)
装置 Visual Studio 2019 实现后,从新解压 darknet-master.zip
,基于这份未做任何批改的代码做测试。依照之前的配置流程,批改 darknet.vcxproj
中 CUDA 版本,在 VS 2019 中配置 OpenCV。。。具体的可看我的另一篇形容搭建的文章 Windows 10 搭建基于 Darknet 的 Yolov4 指标检测平台,在 VS 2019 中,我的项目属性如下图:
配置实现后,从新生成 darknet
,这次居然 没任何报错,胜利编译了!
在 x64
目录下也生成了 darknet.exe
可执行文件:
通过测试,发现没问题。至此,我的问题已解决。
总结
- 呈现 MSB 3721 谬误后,务必在 VS 2015/2017/2019 中查看
darknet
我的项目配置是否正确,配置的蕴含目录、库目录、援用库文件名等是否都存在,相干的环境变量是否配置好,有时引发谬误的可能就是这些配置不正确导致的; - 降级 CUDA 至最新版本,并应用相应版本的 cuDNN;
- 依据显卡算力,批改
darknet.vcxproj
中的Code Generation
值,毕竟也有人应用这个办法解决的; - 应用 VS 2017 或 VS 2019 来编译
darknet
。
每个人环境不一样,导致谬误的问题也不一样,只有一直尝试各种办法、一直排错,能力找到问题的解决方案。具体我的项目具体分析,有时网上很多材料都是间接转载他人的内容,并不适宜所有人,心愿这篇文章能帮忙到你们。
参考文档
- Compiling with GPU on windows 10
- https://github.com/AlexeyAB/darknet
- windows 下 darknet 之 yolo(gpu 版本)装置
- VS2015 配置 darknet 我的项目时遇到 MSB3721 的解决办法