如何将编译过的C++库迅速部署在Visual Studio新项目中

news2024/12/24 20:54:59

本文介绍在Visual Studio中,通过属性表,使得一个新建解决方案中的项目可以快速配置已有解决方案的项目中各类已编译好的C++第三方库的方法。

例如,我们现有一个解决方案,其中的一个项目需要调用ArmadilloOpenCV等多个不同的C++第三方库;我们也已经在这一项目中配置好了所需的各个第三方库,如下图所示。

image

  随后,我们新建了一个解决方案,且这一解决方案中的一个新的项目需要同样需要调用前述项目ArmadilloOpenCV等多个不同的C++第三方库。如下图所示,由于此时我们还没有对新的项目进行第三方库的配置,因此在#include代码中会有报错信息存在。

  针对这一新的项目,我们可以参照文章如何在Visual Studio新C++项目中调用之前配置过的库?中提及的方法,分别对新项目的附加包含目录附加库目录附加依赖项等3个属性加以配置。然而,这样手动配置一次还好,如果今后还会有多个新的项目需要配置同样的第三方库,那么每一次都手动配置就显得十分麻烦。因此,我们可以借助Visual Studio中的属性表,完成这一操作。

  首先,我们需要在原有的项目(也就是已经配置好各类第三方库的项目)中,选择“视图”→“其他窗口”→“属性管理器”选项,如下图所示。

  随后,在“解决方案资源管理器”附近,找到“属性管理器”,并双击项目名称将其展开;随后,基于我们代码需要运行的环境属性(比如Release还是DebugWin32还是x64),将对应的属性信息展开,并右键选择“添加新项目属性表...”。如下图所示,我这里因为希望在Debug版本的x64环境下运行代码,因此就选择在这一环境属性信息对应处右键。

  这里再提一句,如下图所示,我们也可以选择直接在项目名称处右键;但建议大家还是按照实际需求来。

  这样的话,通过我们后续的操作,就会在每一个环境属性信息对应的栏目下出现属性表;如下图所示。

  我们继续前述操作。在选择“添加新项目属性表”后,会弹出“添加新项”窗口;我们在其中配置.props格式的属性表文件的名称与保存路径即可。

  此时,就可以在Debug版本的x64环境对应的一项中,找到我们刚刚创建的属性表,并双击。

  随后,即可弹出属性表的属性页;如下图所示。可以看到,其实这个属性表的属性页就是我们常用的项目的属性窗口

  此时我们要做的,就是将原有项目(也就是已经配置好各类第三方库的项目)的附加包含目录附加库目录附加依赖项等3个属性,复制到属性表的属性页中。这3个属性的位置具体可以参考文章如何在Visual Studio新C++项目中调用之前配置过的库?。

  复制的时候这里也有几个小技巧。首先,我们可以在打开属性表的属性页(或项目的属性页)时,通过切换“解决方案资源管理器”与“属性管理器”的选中状态,无缝切换两个属性页窗口。

  此外,我们可以在原有项目的附加包含目录附加库目录中,通过复制“计算的值”窗口中的内容,实现跨行批量复制,如下图所示。

  然后首先将其复制到文本文件、Word文档文件等作为中转,再将其逐行粘贴值属性表的对应位置处;下图即为复制后的属性表的附加库目录

  而对于附加依赖项,由于其不是一行一行来设置的,因此复制起来就更快一些。

  完成对附加包含目录附加库目录附加依赖项等3个属性的复制工作后,一定记得需要在属性表名称处右键,将其保存。

  随后,我们打开新的项目,也就是待配置第三方库的项目,同样打开“属性管理器”。

随后,在对应的环境属性一栏中,右键并选择“添加现有属性表...”选项。

随后,找到我们刚刚配置好的.props格式的属性表文件,并选择。

此时,在新项目的属性管理器中,就可以看到我们的属性表已经导入了。但是,有时可能会出现如下图所示的情况,即导入属性表后,新的项目依然无法调用这些第三方库。

并且此时双击打开属性表的属性页,发现其中我们刚刚配置的附加包含目录附加库目录附加依赖项等3个属性都还是空白的。

针对这一情况,我们可以首先在新的项目中,在刚刚导入的属性表名称处右键并选择“移除”;随后,将这一新项目所在的解决方案关闭,并再一次在原有项目中保存属性表;随后,将原有项目所在的解决方案关闭,打开新的项目所在的解决方案,重新导入属性表。一般情况下,新的项目就可以使用这些第三方库了。

在今后若有其他新的项目需要配置这些第三方库,我们就可以直接导入这一属性表文件,从而实现快速的环境配置。

至此,大功告成。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文详解:什么是小程序SDK?

什么是小程序SDK? 首先来看看概念:小程序SDK(Software Development Kit)是用于开发和扩展小程序的工具集合。可以理解为一套工具箱,专门帮助开发者建立和定制小程序应用程序。这些工具包括了开发小程序所需的各种代码…

【Android面试八股文】谈一谈你对http和https的关系理解

文章目录 HTTPHTTPSSSL/TLS协议HTTPS加密、解密流程HTTP 和 HTTPS 的关系具体的差异实际应用总结扩展阅读HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上进行通信的两种协议。 它们在很多方面是相似的,但关键的区别在于安全…

前端传进来的单选值是0,到了后端加了个逗号

如上图所示,标记的var的值org和id的值orgOrNot不能一样,如果一样,通过id获取(#(“#orgOrNot”).find(“option:selected”).val())时候就会出现这种情况 改成如下情况,区别开id

ubuntu下同时安装和使用不同版本的库 librealsense

apt 安装的最新版本在/usr 源码安装的旧版本在/usr/local set(realsense2_DIR /usr/local/) find_package(realsense2 2.50.0 REQUIRED) message( "\n\n ${realsense2_INCLUDE_DIR} ${realsense2_VERSION} RealSense SDK 2.0 is FINDINGING, please install it from…

vivado PKGPIN_NIBBLE

描述 PKGPIN_NIBBLE是PKGPIN_BYTEGROUP的一部分。参见PKGPIN_BYTEGROUP, 第122页了解该对象的描述。 相关对象 PKGPIN_BYTEGROUP和PKGPIN_NIBBLE与IO_BANK、PACKAGE_PIN和 PORT,如前所述。此外,每个PKGPIN_NIBBLE都与 Xilinx设备。您可以使用…

The First项目报告:深度解读Layer 2生态zkSync

zkSync发币了,这个无数撸毛党心心念念数年之久的项目终于要来了,zkSync 是由Matter Labs 于2019 年推出的以太坊Layer 2 扩容解决方案,作为L2龙头项目之一,与其同属一个层次的L2四大天王之三Optimism、Arbitrum、zkSync、StarkNet…

RoaringBitMap处理海量数据内存diff

一、背景 假设mysql库中有一张近千万的客户信息表(未分表),其中有客户性别,等级(10个等级),参与某某活动等字段 1、如果要通过等级性别其他条件(离散度也低)筛选出客户,如何处理查询? 2、参与活动是记录活动ID&#…

科凡定制首倡轻高定突围的蓝海战术是明星代言?

4月19日,科凡家居再度重磅发声,正式宣布国际女星舒淇为全球代言人。 纵观定制家居几大一线品牌,欧派代言人胡歌,索菲亚代言人倪妮。尚品宅配代言人赵丽颖,维意定制代言人黄轩,志邦家居代言人周杰伦......大…

31.加载配置文件中的游戏到辅助列表

上一个内容:30.保存游戏配置到文件 以 30.保存游戏配置到文件 它的代码为基础进行修改 效果图: 加载配置文件到列表的函数: void CWndINJ::LoadGame() {int count GetPrivateProfileInt(L"main", L"count", 0, GameI…

sourceTree 解决remote: HTTP Basic: Access denied报错mac

解决sourceTree中remote: HTTP Basic: Access denied报错 mac sourcetree报错报错原因解决方案 mac sourcetree报错 warning: invalid credential line: xxx.com remote: HTTP Basic: Access denied fatal参考链接:https://developer.aliyun.com/article/1304149 …

经典文献阅读之--OrienterNet(自动驾驶中基于网格的交通场景感知)

dia 0. 简介 使用神经网络来匹配2D公开地图的做法是一个很有趣的方法,人们可以使用简单的2D地图在3D环境中指明自己所处的位置,而大部分视觉定位算法则依赖于昂贵的、难以构建和维护的3D点云地图。为了弥合这一差距《OrienterNet: Visual Localization…

全球首个开源类Sora模型大升级,16秒720p画质电影感爆棚!代码和权重全面开源!

目录 01 视频界开源战士 02 深度解码技术 03 打破闭环,开源赋能 潞晨Open-Sora团队刚刚在720p高清文生视频质量和生成时长上实现了突破性进展! 全新升级的Open-Sora不仅支持无缝生成任意风格的高质量短片,更令人惊喜的是,团队选…

关于办公软件的使用

第一部分: 常用函数的使用 在使用的地方,输入SUM(B2:F2)回车 第二部分: 自定义函数的使用 1、打开 宏编辑 2、 自定义函数方法 3、自定义函数的使用和常用函数一样: 在使用的地方,输入计算面积(A3,B3)…

算法设计与分析期末复习题

一:程序阅读分析题(共40分) 1.(8分)阅读“算法1”,分析算法1的功能、时间复杂度。 答案:经典的汉诺塔问题,其目标是将 n 个不同大小的盘子从柱子 A 移动到柱子 C,借助柱…

PDM 测试

文章目录 硬件拓扑AP 生成 PDM输出数据路径AP 输入时域数据频域数据逻辑分析与抓包硬件拓扑 如果使用 AP 需要注意公地 AP 生成 PDM输出 AP 的 output 选择 PDM,MCU 提供 Bit clock,AP 生成 PDM 数据,AP 配置如下 数据路径 AP sin data -> PDM -> codec -> RA…

Git的下载安装及可视化工具小乌龟

一、 Git 的下载 第1步:下载Git,下载地址:Git for Windows 这个就需要去 Git 官网下载对应系统的软件了,下载地址为 git-scm.com或者gitforwindows.org,或者阿里镜像(感谢评论区的星悸迷航同学&#…

el-pagination分页组件导致发送两次请求

场景 有一个搜索框,搜索显示表格内容,下面有分页组件,大概长这样: 当分页组件选择到别的页数(非第一页),再进行查询,查询的内容会显示在第一页,此时会发送两次网络请求。…

TIA Portal 博途 集成自动化软件下载安装,TIA Portal 轻松驾驭复杂工业设备

在博途TIA Portal的全方位赋能下,用户可以轻松驾驭复杂的工业设备,实现设备的精准配置、高效编程、便捷调试和实时监控。 在配置方面,博途TIA Portal以其强大的配置功能,帮助用户快速定义设备的各项参数,使设备能够快速…

洛谷 P3379:最近公共祖先(LCA)← RMQ+欧拉序

【题目来源】https://www.luogu.com.cn/problem/P3379【题目描述】 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。【输入格式】 第一行包含三个正整数 N,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来 N−…

MFC绘制哆啦A梦

OnPaint绘制代码 CPaintDC dc(this); // 用于绘画的设备上下文CRect rc;GetWindowRect(rc);int cxClient rc.Width();int cyClient rc.Height();// 辅助线HPEN hPen CreatePen(PS_DOT, 1, RGB(192, 192, 192));HPEN hOldPen (HPEN)SelectObject(dc, hPen);MoveToEx(dc, cxC…