上一篇文章成功release yolo_tensorrt项目,下面进行debug
链接添加链接描述
1.修改运行格式,Debug x64
2.配置CUDA生成自定义项目
右击项目dll_detector,选择 生成依赖项->生成自定义。只选择CUDA10.2那一项,其他项取消。
test_dll同理
3 配置属性表
tensorrt_7.0和cuda10.2的属性表都与上篇博客相同
新建opencv_debug属性表
-配置opencv属性表
包含目录: C:\Users\freeyu\Documents\opencv-4.1.2\build\include\opencv2
C:\Users\freeyu\Documents\opencv-4.1.2\build\include
库目录: C:\Users\freeyu\Documents\opencv-4.1.2\build\x64\vc15\lib
附加依赖项:(只有这一项,不能有opencv_world412d.lib项,在文末的踩坑中有说明)
opencv_world412d.lib
4.生成dll_detector
会遇见下面的错误,一一进行修改
4.1 无法打开包括文件
问题:
C1083 无法打开包括文件: “class_timer.hpp”: No such file or directory
C1083 无法打开包括文件: “API.h”: No such file or directory
原因: API.h,class_timer.hpp和dll_detector其他文件不在一个目录下
解决方案:
参考链接:https://blog.csdn.net/lidar7956/article/details/107672458
右击dll_detector项目,C/C++ -->附加包含目录–>编辑
添加extra目录:C:\Users\freeyu\Desktop\learn\yolo-trt\extra
(这是我的目录) API.h,class_timer.hpp在extra文件夹下。
4.2 filesystem代码错误
项目->dll_detector->右击->属性->C/C+±>预处理器->预处理器定义->编辑
添加“_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING”
4.3 新错误strcpy
重新生成dll_detector,发现下面的错误
C4996 ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead.
解决方案:
参考链接:https://www.cnblogs.com/pquan/p/10989029.html
项目->dll_detector->右击->属性->C/C+±>预处理器->预处理器定义->编辑
添加“_CRT_SECURE_NO_WARNINGS”
4.4 新错误 configBatchSize
重新生成dll_detector,发现下面的错误
C4700 使用了未初始化的局部变量“configBatchSize”
解决方案:yoloplugin_lib.cpp的110行configBatchSize后面加上“{}”
这个是VS提醒修改的
4.5 新错误 必须定义入口点
重新生成dll_detector,发现下面的错误
LNK1561 必须定义入口点
原因:这是因为主项目是test_dll项目,所以dll_detector要生成的是动态库.dll而不是可执行文件exe
解决方案:右击dll_detector项目,配置属性–>常规–>配置类型:动态库
重新生成dll_detector,生成成功。
5.生成test_dll
5.1 错误1
C1083 无法打开包括文件: “class_timer.hpp”: No such file or directory
C1083 无法打开包括文件: “class_detector.h”: No such file or directory
解决方案: 右击dll_detector项目,C/C++ -->附加包含目录–>编辑
添加extra目录:C:\Users\freeyu\Desktop\learn\yolo-trt\extra(这是我的目录)
添加modules目录:C:\Users\freeyu\Desktop\learn\yolo-trt\modules
5.2 错误2
LNK1120 4 个无法解析的外部命令
解决方案: test_dll下面的引用,右击添加引用
生成成功
6 运行项目
6.1 错误1:无法启动程序,不是有效的win32 应用程序
解决方案:test_dll 右击选择 设为启动项目
6.2 错误2:找不到cfg文件
修改代码中路径,改成绝对路径
这里我使用的是yolov4的权重,修改sample_detector.cpp代码如下
图片路径
6.3 别忘记加权重
在configs文件夹中加入yolov4.weights
运行程序会得到yolov4-kFLOAT-batch1.engine文件
6.4 运行成功
踩坑:absort() has been called
参考链接:https://blog.csdn.net/weixin_44312186/article/details/88991831
这个链接的评论拯救了我
在opencv的属性表中,连接器-输入-附加依赖 在opencv_world410.lib 与opencv_world410d.lib 中删掉opencv_world410.lib 最终解决