使用cmake在win10编译yolov5+tensorRT+cuda+cudnn+protobuf代码进行混合编译
这里进行之前需要把protobuf在win10下编译,可以参考这篇文章
从Linux下载下来的工程代码,这里建议直接使用vs系列打开不要用vscode打开,vscode对win下的cmake不友好,主要体现在报错机制无法直接定位,题主的环境是vs2022通过cmake可以快速的进行定位bug,并可以快速解决(vscode 的cmake在Linux下还是比较友好的,但是通常如果在Linux下为什么 不研究makefile呢?),至于如何使用vs2022打开cmake工程,因为还没cmake文件,先创建一个空CMakeLists.txt, 直接在CMakeLists.txt文件夹右击选择vs2022打开,这样vs2022会自动打开cmake文件,也可以参考这篇文章,打开后先把CMakeLists文件的基本信息填上:
cmake_minimum_required(VERSION 3.10.0)
project(yolov5_detect_test VERSION 0.1.0)# 设置语言版本
enable_language(CXX CUDA)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CUDA_STANDARD 11)# 加入opencv库
set(OpenCV_DIR "F:\\install\\thirdparty\\opencv\\build\\x64\\vc15\\lib")
find_package(OpenCV REQUIRED)
message(STATUS ${OpenCV_LIBS})# 遍历工程源码
file(GLOB_RECURSE SRC_LIST DEPENDS "./src/*.cpp","src/*.cu","src/*.c")# 引入外部的头文件
include_directories("./src")
include_directories("F:\\install\\thirdparty\\protobuf3.11.4\\include")
include_directories("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\include")
include_directories("F:\\install\\thirdparty\\TensorRT-8.5.1.7.Windows10.x86_64.cuda-11.8.cudnn8.6\\TensorRT-8.5.1.7\\include")# 引入外部的lib库文件
link_directories("F:\\install\\thirdparty\\TensorRT-8.5.1.7.Windows10.x86_64.cuda-11.8.cudnn8.6\\TensorRT-8.5.1.7\\lib")
link_directories("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\lib\\x64")
link_directories("F:\\install\\thirdparty\\protobuf3.11.4\\lib")add_executable(yolov5_detect_test ${SRC_LIST})target_link_libraries(yolov5_detect_test libprotobufd cuda cudart nvinfer ${OpenCV_LIBS})
接下来编译:

添加头文件#include <string>,代码格式问题是通过在vs中文件另保存,然后修改格式如下:

保存好以后重新编译,会发现这个文件的没有错误了,但是main文件有大量的类似错误,其实也是编码格式文件:

对main文件进行编码改变后,重新编译发现没有编码问题了,现在是缺少函数:

这个问题是win中需要包含#include <shlwapi.h>头文件即可,然后重新编译,结果如下:

这里提醒缺少.lib文件,说明没有找到,这里需要注意的是我这里工程是Debug模型,因此protobuf的库也需要debug的库,这里需要把一个import_lib.cpp文件加入即可,然后重新编译:
#if defined(_WIN32)
# define U_OS_WINDOWS
#else
# define U_OS_LINUX
#endif#ifdef U_OS_WINDOWS
#if defined(_DEBUG)
# pragma comment(lib, "opencv_world420d.lib")
#else
# pragma comment(lib, "opencv_world420.lib")
#endif//导入cuda
#pragma comment(lib, "cuda.lib")
#pragma comment(lib, "cudart.lib")
#pragma comment(lib, "cublas.lib")
#pragma comment(lib, "cudnn.lib")//#pragma comment(lib, "Shlwapi.lib")//导入tensorRT
#pragma comment(lib, "nvinfer.lib")
#pragma comment(lib, "nvinfer_plugin.lib")
//#pragma comment(lib, "nvparsers.lib")#if defined(_DEBUG)
#pragma comment(lib, "libprotobufd.lib")
#else
#pragma comment(lib, "libprotobuf.lib")
#endif#ifdef HAS_PYTHON
#pragma comment(lib, "python37.lib")
#endif#endif // U_OS_WINDOWS
结果如下,发现还是保存,其实是因为缺少一个库和使用了protobuf的dll,需要消除即可,解决方法如下图,分别在import_lib.cpp中引入库,在cmake中加入消除警告即可,下图的那个放开的应该是#pragma comment(lib,"Shlwapi.lib"),画错了,然后重新编译:

保存编译即可通过:

调试的情况下,cmake我研究发现不能自动调用其他地方的dll,但是内我又不想每个工程都copydll,这里做法是把那个exe可执行文件单独送到一个我文件夹,把对于的dll也拷贝到这个文件上即可进行调试了。具体如下:



附上完整的cmake:
cmake_minimum_required(VERSION 3.10.0)
project(yolov5_detect_test VERSION 0.1.0)# 设置语言版本
enable_language(CXX CUDA)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CUDA_STANDARD 11)# 设置可执行文件目录
SET(EXECUTABLE_OUTPUT_PATH "F:\\BaiduNetdiskDownload\\tensorrt-integrate\\tensorrt-integrate\\tensorrt-integrate\\run")
# 消除警告
add_definitions(-w)
add_definitions(-DPROTOBUF_USE_DLLS) # 解决# 加入opencv库
set(OpenCV_DIR "F:\\install\\thirdparty\\opencv\\build\\x64\\vc15\\lib")
find_package(OpenCV REQUIRED)
message(STATUS ${OpenCV_LIBS})# 遍历工程源码
file(GLOB_RECURSE SRC_LIST DEPENDS "./src/*.cpp","src/*.cu","src/*.c")# 引入外部的头文件
include_directories("./src")
include_directories("F:\\install\\thirdparty\\protobuf3.11.4\\x64-Debug\\include")
include_directories("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\include")
include_directories("F:\\install\\thirdparty\\TensorRT-8.5.1.7.Windows10.x86_64.cuda-11.8.cudnn8.6\\TensorRT-8.5.1.7\\include")# 引入外部的lib库文件
link_directories("F:\\install\\thirdparty\\TensorRT-8.5.1.7.Windows10.x86_64.cuda-11.8.cudnn8.6\\TensorRT-8.5.1.7\\lib")
link_directories("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\lib\\x64")
link_directories("F:\\install\\thirdparty\\protobuf3.11.4\\x64-Debug\\lib")add_executable(yolov5_detect_test ${SRC_LIST})target_link_libraries(yolov5_detect_test libprotobufd cuda cudart nvinfer ${OpenCV_LIBS})
相关文章:

使用cmake在win10编译yolov5+tensorRT+cuda+cudnn+protobuf代码进行混合编译
这里进行之前需要把protobuf在win10下编译,可以参考这篇文章从Linux下载下来的工程代码,这里建议直接使用vs系列打开不要用vscode打开,vscode对win下的cmake不友好,主要体现在报错机制无法直接定位,题主的环境是vs2022…...
《C++ Primer Plus》第17章:输入、输出和文件(7)
编程练习 编写一个程序计算输入流中第一个$之前的字符数目,并将$留在输入流中。 #include<iostream>int main() {int ct 0;while(std::cin.peek()!$){ct;std::cin.get();}std::cout << "num: " << ct << std::endl;return 0; }答…...

PGLBox 超大规模 GPU 端对端图学习训练框架正式发布
作者 | PGLBox项目组 导读 PGLBox是百度研发的基于GPU的大规模图模型训练框架,支持数百亿节点和边的图模型全GPU训练,已在百度广泛部署。相比业界主流的分布式 CPU 解决方案,PGLBox 具有超高性能、超大规模、算法丰富、灵活易用、落地广泛等优…...

sql-labs-Less1
靶场搭建好了,访问题目路径 http://127.0.0.1/sqli-labs-master/Less-1/ 我最开始在做sql-labs靶场的时候很迷茫,不知道最后到底要得到些什么,而现在我很清楚,sql注入可以获取数据库中的信息,而获取信息就是我们的目标…...

又一个国内类ChatGPT模型?【秘塔科技上线自研LLM大模型「对话写作猫」】
又一个国内类ChatGPT模型?【秘塔科技上线自研LLM大模型「对话写作猫」】 说个题外话,今天一大早就收到了Biying的邮件。前段时间不是申请了New Biying的内测吗?下午可以尝试一下玩一会儿。如果体验感还不错或者还有很多bug,那我到…...

卷麻了,00后测试用例写的比我还好,简直无地自容......
经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 如何编写测试用例? 作为一个测试新人,刚开始接触测试,对于怎么写测试用例很是头疼,无法…...

动态网页的核心——JSP
文章目录1,JSP 概述2,JSP 小案例2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3,JSP 原理4,JSP 总结4.1 JSP的 缺点4.2技术的发展历程4.3JSP的必要性最后说一句1,JSP 概述 JSP(全称…...

RK3588平台开发系列讲解(系统篇)init.d介绍
平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、Linux启动简介二、sysvinit配置三、inid.d介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇介绍init.d相关知识。 一、Linux启动简介 Linux用户空间启动时,第一个会启动init进程,用来引导启动其…...

taobao.user.buyer.get( 查询买家信息API )
¥开放平台基础API必须用户授权 查询买家信息API,只能买家类应用调用。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new…...

python学生信息管理系统
wx供重浩:创享日记 对话框发送:python学生信息 免费获取完整源码源文件配置教程说明等 在IDLE中运行《学生信息管理系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时,有两种方…...

【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if hidden (十一)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

2023上半年软考,广州/东莞/深圳/江苏报班是明智的选择
软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成…...

C++修炼之练气期一层——命名空间
目录 1.引例 2.命名空间的定义 3.命名空间的使用 4.命名空间使用注意事项 1.引例 #include <stdio.h> #include <stdlib.h>int rand 10;int main() {printf("%d\n", rand);return 0; } 当我们用C语言写下这样的代码,看着并没有什么语法…...

matplotlib综合学习
1.arange函数arange函数需要三个参数,分别为起始点、终止点、采样间隔。采样间隔默认值为1看例子: import numpy as np #import matplotlib.pyplot as plt xnp.arange(-5,5,1) print(x)2.绘制sin(x)曲线import numpy as np import matplotlib.pyplot as …...

IIS .Net Core 413错误和Request body too large解决办法
错误描述图片比较大时,在前端上传就报413错误。根本到不了后端。在网上看到这个文章比较有用。https://blog.csdn.net/wstever/article/details/1288707421、修改网站Web.config配置文件加入下面这段配置<?xmlversion"1.0" encoding"utf-8"…...
Spring Boot数据访问—(springboot 多数据源)—官方原版
Spring Boot 包含许多用于处理数据源的启动器,本文回答与执行此操作相关的问题。一、配置自定义数据源要配置自己的DataSource,请在配置中定义该类型的Bean。Spring Boot在任何需要的地方重用DataSource,包括数据库初始化。如果需要外部化某些…...

高燃!GitHub上标星75k+超牛的Java面试突击版
前言不论是校招还是社招都避免不了各种面试。笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大…...

grid宫格布局新手快捷上手-f
前言 grid 网上有很多,但都是大而全的,感觉新人上手很吃力,本文仅以最快捷的方式进行介绍,如何使用grid宫格布局 本文是新人上手,若想了解更多grid布局,请阅读其他文章 使用 声明布局 display: grid;声…...

面试必刷101 Java题解 -- part 3
part1 – https://blog.csdn.net/qq_41080854/article/details/129204480 part2 – https://blog.csdn.net/qq_41080854/article/details/129224785 面试必刷101 Java题解 -- part 3动规五部曲71、斐波那契数列72、跳台阶73、最小花费爬楼梯74、最长公共子序列(二)75、最长公共…...

干货满满!MES的简介和运用
导读 谈及MES必须先谈生产,生产体系模型如图所示,涉及人、财、物、信息等资源,产、供、销等环节,以及供应商、客户、合作伙伴等。 其中,生产管理是通过对生产系统的战略计划、组织、指挥、实施、协调、控制等活动&…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...

Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...