VS2019 c++ cmake项目 打包并使用 (lib\dlll)

背景

最近项目中经常调用第三方库、带头文件、lib和dll的库,需要使用cmake进行项目管理,之前一直比较糊涂这方面,在这里做一个整理总结

编译汇编过程

在这里插入图片描述

静态链接方式:

把lib里面编译好的东西(函数、变量等),直接加入到你的执行程序中,缺点是占空间

动态链接方式:

提供一个dll, 在执行到这个dll包括的函数的时候,才会调用这个dll。优点是省空间,多个程序用一个dll

配置过程

两者都需要头文件,头文件类似是打包好的库的外部接口,在项目配置的时候,需要把头文件目录加入到项目的包含目录里

vs在进行路径检索的时候,会从自己的项目的包含目录开始找,所以要把头文件的目录放入,头文件里面的路径一般写的都是相对路径,这样才不会错

一般的配置流程:

步骤作用
把头文件目录放入项目包含目录可以在项目中引用相应的头文件、函数
把库目录(lib)放入项目库目录、把库的名字,放入附加依赖项告诉项目需要XX.lib,vs在库目录里找相应的lib
把dll放到项目根目录VS在执行的时候,会找dll,找的目录从项目的根目录开始,也会找系统的目录

VS对已有项目打包

原理:
之前写c++项目,都是可执行文件,比如一个main函数,比如一个qt程序界面,现在希望这个项目不去执行,只作为一个包来使用
打包成dll:参考博客1 参考博客2
主要步骤其实就是把vs项目的输出项变成输出dll,然后要写好定义的宏文件,作为外界调用你函数的头文件,告诉外界函数名是什么

cmake对已有项目打包

cmake配置项目的时候,经常会需要对已有的打包成lib,供可执行项目调用,或者调用第三方库
主项目cmakelist:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
子项目cmakelist:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/18222.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

海量请求下,高并发接口的设计思路

1. 背 景 虽然现在很多人,动不动就提什么高并发、请求量多大,数据量多少多少,但我可以很认真地说,那都是他妈的在吹牛! 生产环境,真正有大请求量的,就那么几个业务场景,而且多是面…

算法记录 | Day56 动态规划

583.两个字符串的删除操作 思路: 1.确定dp数组(dp table)以及下标的含义:dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数…

网络协议与攻击模拟-05-ICMP协议

ICMP 协议 1、理解 ICMP 协议 2、理解 ICMP 重定向 3、会使用 wireshark 分析 ICMP 重定向流量实验 一、 ICMP 基本概念 1、 ICMP 协议 Internet 控制报文协议,用于在 IP 主机、路由器之间传递控制消息,控制消息指网络通不通、主机是否可达、路由是否…

iview-admin首页的图表数据渲染问题

iview-admin的首页有几个图表&#xff0c;应该是作者自己封装的&#xff0c;有个问题是在mounted时&#xff0c;从后台获取数据&#xff0c;应该把图表根据数据重新渲染一下。 <chart-bar id"myChart" style"height: 260px;" :value"barData"…

全方位揭秘!大数据从0到1的完美落地之Shuffle和调优

MapReduce高级 shuffle阶段 概述 MapReduce会确保每个reducer的输入都是按键排序的。从map方法输出数据开始、到作为输入数据传给reduce方法的过程称为shuffle。在此&#xff0c;我们将学习shuffle是如何工作的&#xff0c;因为它有助于我们理解工作机制&#xff08;如果需要…

前端008_类别模块_新增功能

类别模块_新增功能 1、需求分析2、新增窗口实现3、列表引用新增组件4、关闭弹出窗口5、校验表单数据6、提交表单数据6.1、Mock 添加新增模拟接口6.2、Api 调用接口6.3、测试新增功能1、需求分析 点击 新增 按钮后,对话框形式弹出新增窗口输入分类信息后,点击 确定 提交表单数…

【递推专题】常见的递推“模型”总结

目录 1.斐波那契数列分析&#xff1a;代码&#xff1a; 2.平面分割问题分析&#xff1a; 3.汉诺塔问题分析&#xff1a; 4.卡特兰数分析&#xff1a; 5.第二类斯特林数总结&#xff1a; 1.斐波那契数列 分析&#xff1a; 斐波那契数列又称兔子数列&#xff0c;其原理来源于兔子…

测试知识总结

1.影响ui自动化稳定性 异常弹出对话框 --异常场景库 页面控件元素属性的细微变化--模糊匹配 延迟 --- retry 数据 -- 数据已被使用 2. 移动端应用细分为三大类&#xff1a;Web App、Native App&#xff08;原生应用&#xff09; 和 Hybrid App&#xff08;混合应用&…

第二十四章 Unity 纹理贴图

通常情况下&#xff0c;3D网格模型只能展示游戏对象的几何形状&#xff0c;而表面的细节则纹理贴图提供。纹理贴图通过UV坐标“贴附”在模型的表面。当然&#xff0c;这个过程不需要我们在Unity中完成&#xff0c;而是在建模软件中完成的。通常情况下&#xff0c;我们通过3ds m…

JavaScript:二叉树(前序遍历,中序遍历,后序遍历,递归法,统一迭代法)

文章目录 二叉树递归法迭代法 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09;二叉树的递归遍历递归法作图分析代码和思路分析 二叉树的迭代遍历前序遍历迭代分析代码及思路分析 94. 二叉树的中序遍历递归法作图举例递归流程 迭代法代码 145. 二叉树的后序遍历 …

制作Alpine Linux镜像报错errors: 15 distinct packages available

1.执行报错 执行docker build -t 镜像:版本 -f Dockerfile . 报错&#xff1a; 2.查看网上的解决思路 网上文档解决思路&#xff1a; 这边我做了一下改变把这些写入了dockerfile 加了几个RUN RUN rm -rf /var/cache/apk RUN mkdir -p /var/cache/apk RUN apk update -v 发现还…

mongodb分片集群搭建

1.本次搭建使用三台centos7主机搭建伪集群&#xff0c;关闭防火墙和selinux服务 2.mongodb架构相当于9个分片节点&#xff0c;3个路由节点&#xff0c;3个配置节点&#xff0c;主机信息如下图所示 主机名称主机ip地址端口服务A10.1.60.11420001&#xff0c;21001&#xff0c;…

Visual Studio 2019离线安装包获取和安装教程

摘要 介绍Visual Studio 2019离线安装方法和配置及注意事项 关键词 VS2019 离线安装 Visual Studio 2019版本与以往的2015、2013、2012版本不同&#xff0c;采用了新的模块化安装方法。微软官方也并未提供ISO镜像&#xff0c;根据官方提供的离线下载方案&#xff08;docs.mic…

JMeter开发web及手机APP自动化脚本练习

&#xff08;一&#xff09;开发web自动化脚本练习 一、打开浏览器代理服务器设置 我这里用的是360浏览器&#xff0c;打开浏览器代理服务器设置&#xff0c;端口要与jmeter中的端口设置保持一致哦。 二、JMeter设置代理 JMeter设置代理&#xff08;jmeter中的端口要与360浏览…

数据发送流程

在发送模式下&#xff0c;UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR)&#xff0c;TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位&#xff0c;可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…

JAVA基础:Scanner类中next(), nextLine(), hasNext(), hasNextLine()

一、next() : 只读缓冲区中空格之前的数据,并且光标指向本行。二、nextLine() : 读取除回车以外的所有符号(整行内容)&#xff0c;光标定位在下一行三、hasNext() &#xff1a;检查下一个标记&#xff08;token&#xff09;&#xff0c;也就是以空格、制表符或换行符为分隔符的…

大数据技术之Kettle

目录 第1章 Kettle概述 1.1 ETL简介 1.2 Kettle简介1.2.1 Kettle是什么 1.2.2 Kettle的两种设计 1.2.3 Kettle的核心组件 1.2.4 Kettle特点 第2章 Kettle安装部署 2.1 Kettle下载 2.1.1 下载地址 2.1.2 Kettle目录说明 2.1.3 Kettle文件说明 2.2 Kettle安装部署 …

YonLinker连接集成平台构建新一代产业互联根基

近日&#xff0c;由用友公司主办的“2023用友BIP技术大会“在用友产业园&#xff08;北京&#xff09;盛大召开&#xff0c;用友介绍了更懂企业业务的用友BIP-iuap平台&#xff0c;并发布了全面数智化能力体系&#xff0c;助力企业升级数智化底座&#xff0c;加强加速数智化推进…

mysql数据库之索引

1.索引的相关知识 1.1 索引的简介 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于c语言的链表通过指针指向数据记录的内存地址&#xff09;。使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是…

PCL学习六:Filtering-滤波

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云 1. 点云滤波概述 1.1 背景 在获取点云数据时&#xff0c;由于设备精度、操作者经验、环境因素等带来的影响&#xff0c;以及电磁波衍射特性、被测物体表面性质变化和数据拼接配准操作过程的影响&#xff0c;点云数据中将…