26功能之VS2013静态库的制作与使用

2023-11-17

26功能之VS2013静态库的制作与使用

一 制作静态库

1 新建项目-选择Win32项目
在这里插入图片描述

2 先选择空项目-静态库。若先选择静态库,空项目按钮无法被选中,这点需要注意。
在这里插入图片描述

3 可以看到此时是没有其它.h和.cpp文件,有时VS13或者15即使你创建空项目,他也会自动帮你创建其它文件。。。这是bug,重新创建就好。
在这里插入图片描述

4 在.cpp文件先包含头文件名,然后实现你的函数功能。
在这里插入图片描述

5 在头文件中添加防止头文件重复的内容,然后声明你刚刚已经实现的函数。
当然也可以写成#pragma once。

在这里插入图片描述

6 此时点击生成解决方案可以看到项目文件中的Debug存在xxx.lib文件。lib文件实际上就是我们的实现文件。

二 开始使用静态库

7 右击解决方案,添加新项目。
在这里插入图片描述
8 选择Win32控制台应用程序。
在这里插入图片描述

9 选择平常的控制台应用程序-空项目。
在这里插入图片描述

10 添加用于创建主函数的.cpp文件。
在这里插入图片描述

11 将静态库的头文件相对(或者绝对)路径写在主函数的顶端,当然你也可以将该头文件拷贝至本项目的目录下,即与有主函数的.cpp文件一起。然后点击执行查看效果如下。
出错原因:只是添加了头文件,而头文件只要函数的声明,没有实现,这就需要我们刚刚生成的静态库,也就是实现文件。本质:二进制;好处:别人能调用并且看不到源码。

在这里插入图片描述

12 添加静态库文件。点击项目-属性-链接器-常规-附加库目录。将库文件所在的目录添加上去。
VS2017好像这一步是防止VC/VC++目录那一项做的。
(方法2:或者将静态库拷贝到本项目路径,然后点击添加资源-现有资源文件,添加进去)。

在这里插入图片描述
在这里插入图片描述

注意:有可能你此时还未能够执行,你可能还需要在链接器上面添加附加依赖项,将所有静态库的绝对路径添加上去。这里我不需要这一步。

13 结果成功调用。
在这里插入图片描述

14 总结与分析:
实际上,我们生成静态库只需要用到两个东西:
1)静态库的头文件;
2)静态库xxx.lib,作用是实现文件;
在使用的过程中,需要添加头文件与xxx.lib,前者比较简单,拷贝到调用项目的目录下或者直接写绝对或者相对路径;后者需要在项目的属性中添加对应的库目录与库目录文件xxx.lib。

完整的发布一个静态库:
1)建立一个库文件与头文件;
2)将静态库与静态库的头文件拷贝至库文件与头文件即可使用;

如下图,xxx.lib放在lib文件中,xxx.h放在include文件中。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

26功能之VS2013静态库的制作与使用 的相关文章

  • 如何以编程方式将访问键(快捷方式)添加到 WPF ContextMenu?

    我已经有以下内容 var myContextMenu new System Windows Controls ContextMenu var exitItem new MenuItem exitItem Header E xit exitI
  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 我的 std::hash for std::tuples...有什么改进吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有些人可能已经注意到 std hash 不支持元组 所以我添加了一个重载 它看起来比我到目前为止看到的解决方案 更好 有人有进一步减少这段代码的
  • 如何在 ASP.NET MVC 中将 XML 文件发送到客户端

    在 ASP NET MVC 中 我有一个数据库表 我想在某个视图页面上有一个按钮 如果某个用户单击该按钮 我的应用程序将生成包含数据库中所有行的 XML 文件 然后 应将包含 XML 的文件发送到客户端 以便用户看到下载弹出窗口 同样 我希
  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • ASP.net WebForms - 在标记中使用 GetRouteUrl

    我一直在尝试弄清楚如何将路由功能与 ASP net 4 0 WebForms 一起使用 我将一条路线添加到我的路线集合中 void Application Start RegisterRoutes RouteTable Routes voi
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 如何重用具有稍微不同的 ProcessStartInfo 实例的 Process 实例?

    我有以下开始的代码robocopy https technet microsoft com en us library cc733145 aspx as a Process 我还需要进行数据库查询以确定每次需要复制哪些目录robocopy被
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用

随机推荐

  • Qt中用textEdit发送文本遇到的换行问题

    用textEdit发送文本遇到的换行问题 在开发BLE通讯的过程中遇到了以下问题 在自己写的BLE上位机的输入框textEdit中输入数据 回车换行之后发送 但串口调试助手处接收的数据没有换行 但是在串口调试助手的输入框中输入数据再回车换行
  • Blender使用maya系快捷键

    文章目录 第一步 将config文件夹放入 第二步 将maya快捷键 以及类maya面板放入 空格以及右键的饼面板 第三步 在blender里将mayaKey里的快捷键导入 并选择 第四步 融合blender本身的快捷键 可选 1 从ble
  • 英伟达驱动更新记录_N卡驱动更新软件(NVIDIA GeForce Experience) v3.16.0.122 官方版

    NVIDIA GeForce Experience显卡驱动更新软件可以帮助你检查计算机的geforce驱动程序 并且将其更新到最新的版本 更新显卡驱动有利于更稳定流畅的运行游戏 功能介绍 1 让驱动程序始终处于最新状态 GeForce Ex
  • Docker容器之私有仓库(Harbor)

    创建私有仓库 下载registry镜像 docker pull registry 指定镜像仓库地址 vim etc docker daemon json insecure registries 192 168 159 11 5000 添加此
  • java.lang.NoSuchMethodError: org.springframework.data.redis.core.StringRedisTemplate.delete redis删报错

    java lang NoSuchMethodError org springframework data redis core StringRedisTemplate delete Ljava lang Object V springboo
  • KEIL 断点调试技巧

    实际项目中断点调试起了很大作用 Keil的断点调试功能很强大 除了普通的设置断点运行到断点处 还有单步 跳转 除了这些常规的方法 对于一些疑难杂症 常规方法就有点杯水车薪了 下面我总结下我在工作中常用的几种断点调试技巧 1 断点位置运行次数
  • Linux 中的 chsh 命令及示例

    Linux中的chsh命令用于更改用户的登录shell 当前为登录shell Shell是与操作系统交互的用户界面 可以被认为是操作系统的外层 bash shell 是 Linux 中使用最广泛的登录 shell 之一 该命令允许用户从当前
  • selenium处理12306出发地value值修改不成功

    不知道你们在使用ui框架编写12306时 有没有遇到过这样的问题 在使用selenium去编写场景时发现出发地这个input标签 每次都没办法按照你的预期去修改值 例如 首先在浏览器里使用document发现完全可以修改掉输入框的值 然后兴
  • 排序算法总结(Python版本)

    看了很多排序算法 每种算法都有多个版本 现总结一版自己觉得容易理解的 供以后翻阅 1 插入排序 直接插入排序 直接插入排序是将一个数插入到已经排序好的序列中 做法是先将第一个数作为已经排序好的 依此将后面的数取出插入到前面已排序好的序列中
  • 数据科学猫:机器学习建模流程

    进击的橘子猫正式改名上线啦 我的CSDN主页 https blog csdn net Orange Spotty Cat 也欢迎大家搜索微信公众号 进击的橘子猫 我也会定期分享数据科学 Python 大数据 项目管理与PPT的相关知识 让我
  • 【机器学习】—各类梯度下降算法 简要介绍

    阅读之前看这里 博主是一名正在学习数据类知识的学生 在每个领域我们都应当是学生的心态 也不应该拥有身份标签来限制自己学习的范围 所以博客记录的是在学习过程中一些总结 也希望和大家一起进步 在记录之时 未免存在很多疏漏和不全 如有问题 还请私
  • 考研教训分享

    考研教训分享 大家好 今天分享一篇考研教训 这不是经验帖 这只是一篇避坑指南 记录了我考研期间所走的所有弯路 希望可以帮助到在这条路上奋斗的你 我是某双非的工科考生 所以这篇文章更偏向于考数学的研友 2月中旬备考 复习前感觉自己之前大学学过
  • 你的朋友可能还在为毕设烦恼,而你已经有了这113个Java计算机毕业设计项目

    站在计算机专业毕业设计的门槛上 你是否为选题和项目规划而烦恼 今天 我们将为即将毕业的同学们展示多个毕业设计项目 期待能为正在为毕业设计抓狂的同学们提供一些帮助 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传到百
  • Mac用户入门的13个基础终端命令

    终端是用户在Mac电脑中经常使用的应用程序 也是非常好用的Mac应用 终端应用之所以受欢迎是因为 它可以直接执行用户给出的命令 从而完成其他程序无法完成的操作 更改目录 cd 示例用法 cd folder 使用cd命令更改目录 例如 cd
  • vue进阶——整合富文本编辑器wangEditor

    vue进阶 整合富文本编辑器wangEditor 前言 一 什么是wangEditor 二 安装wangEditor 1 React 2 Vue2 3 Vue3 4 CDN 三 基本使用 1 vue2 2 vue3 四 文件上传问题 1 前
  • kdj指标主要看哪个值_KDJ指标的最全面攻略文章,散户学会后看指标不再迷茫,超赞...

    本文由公众号越声投研 yslcwh 整理 仅供参考 不构成操作建议 如自行操作 注意仓位控制和风险自负 我们步入了信息时代 知识已经是我们人类生存和生产当中最为重要的因素之一 而如今 在求知欲的趋势下 我们消费者也甘为知识而花费解囊 智慧经
  • 关于set_output_delay与set_input_delay概念与用法

    一 这两条约束语句都是针对板级延时而言的 语句中必须的有是 时钟与port 二 set input delay 用于数据输入端口 调节数据输入与时钟输入到来的相位关系 当FPGA外部送入FPGA内部寄存器数据时 会有两个时钟launch c
  • 被迫学习一波Linux命令

    事情起因 部署一个服务 人家说了最低配置是3G 我没当回事 拿着个2G的服务器直接就上了 结果 哈哈 都能猜到结果 服务器内存爆了 而且最可气的是服务器还登不进去 重启之后内马上又被拉满了 根本连接进不去 算是一次小小的事故 记录是为了不再
  • msvcp110.dll丢失原因——msvcp110.dll丢失怎么修复(最新可修复)

    昨天卸载了一个垃圾软件以后 我的其他软件就无法打开运行 提示msvcp110 dll丢失 无法继续执行此代码 今天早上找了很多方法 终于把msvcp110 dll丢失的原因以及修复的方法都弄明白了 msvcp110 dll是一个非常重要的文
  • 26功能之VS2013静态库的制作与使用

    26功能之VS2013静态库的制作与使用 一 制作静态库 1 新建项目 选择Win32项目 2 先选择空项目 静态库 若先选择静态库 空项目按钮无法被选中 这点需要注意 3 可以看到此时是没有其它 h和 cpp文件 有时VS13或者15即使