Debug+yolo_tensorrt项目

发布时间:2023-12-20 13:00

上一篇文章成功release yolo_tensorrt项目,下面进行debug
链接添加链接描述

1.修改运行格式,Debug x64

\"Debug+yolo_tensorrt项目_第1张图片\"

2.配置CUDA生成自定义项目

右击项目dll_detector,选择 生成依赖项->生成自定义。只选择CUDA10.2那一项,其他项取消。
test_dll同理
\"Debug+yolo_tensorrt项目_第2张图片\"

3 配置属性表

\"Debug+yolo_tensorrt项目_第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

会遇见下面的错误,一一进行修改
\"Debug+yolo_tensorrt项目_第4张图片\"

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文件夹下。
\"Debug+yolo_tensorrt项目_第5张图片\"

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.
\"Debug+yolo_tensorrt项目_第6张图片\"
解决方案:
参考链接:https://www.cnblogs.com/pquan/p/10989029.html
项目->dll_detector->右击->属性->C/C+±>预处理器->预处理器定义->编辑
添加“_CRT_SECURE_NO_WARNINGS”

\"Debug+yolo_tensorrt项目_第7张图片\"

4.4 新错误 configBatchSize

重新生成dll_detector,发现下面的错误
C4700 使用了未初始化的局部变量“configBatchSize”
\"Debug+yolo_tensorrt项目_第8张图片\"
解决方案:yoloplugin_lib.cpp的110行configBatchSize后面加上“{}”
这个是VS提醒修改的
\"Debug+yolo_tensorrt项目_第9张图片\"

4.5 新错误 必须定义入口点

重新生成dll_detector,发现下面的错误
LNK1561 必须定义入口点

\"在这里插入图片描述\"
原因:这是因为主项目是test_dll项目,所以dll_detector要生成的是动态库.dll而不是可执行文件exe
解决方案:右击dll_detector项目,配置属性–>常规–>配置类型:动态库
\"Debug+yolo_tensorrt项目_第10张图片\"

重新生成dll_detector,生成成功。
\"Debug+yolo_tensorrt项目_第11张图片\"

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 个无法解析的外部命令
\"Debug+yolo_tensorrt项目_第12张图片\"
解决方案: test_dll下面的引用,右击添加引用
\"Debug+yolo_tensorrt项目_第13张图片\"
生成成功
\"Debug+yolo_tensorrt项目_第14张图片\"

6 运行项目

6.1 错误1:无法启动程序,不是有效的win32 应用程序

\"Debug+yolo_tensorrt项目_第15张图片\"

解决方案:test_dll 右击选择 设为启动项目

6.2 错误2:找不到cfg文件

\"Debug+yolo_tensorrt项目_第16张图片\"

修改代码中路径,改成绝对路径
这里我使用的是yolov4的权重,修改sample_detector.cpp代码如下
\"Debug+yolo_tensorrt项目_第17张图片\"
图片路径
\"Debug+yolo_tensorrt项目_第18张图片\"

6.3 别忘记加权重

在configs文件夹中加入yolov4.weights
运行程序会得到yolov4-kFLOAT-batch1.engine文件
\"Debug+yolo_tensorrt项目_第19张图片\"

6.4 运行成功

\"Debug+yolo_tensorrt项目_第20张图片\"

踩坑:absort() has been called

参考链接:https://blog.csdn.net/weixin_44312186/article/details/88991831
这个链接的评论拯救了我
在opencv的属性表中,连接器-输入-附加依赖 在opencv_world410.lib 与opencv_world410d.lib 中删掉opencv_world410.lib 最终解决
\"Debug+yolo_tensorrt项目_第21张图片\"

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号