文章目录

  • 前言
  • 一、什么是静态链接库?
  • 二、静态链接库的建立与使用
    • 1、静态链接库的建立
      • 创建一个静态链接库项目
      • 创建一个头文件
      • 编写自己的静态库
      • 生成静态库
    • 2、静态链接库的使用
      • 创建一个新项目
      • 写入自己定义的那个头文件
      • 重新打开vs时
  • 总结

前言

在我们平时写代码的时候,代码中会含许多头文件,然后我们就可以来定义一些变量,使用一些函数。那我们也会想,有没有可能把自己写的一些函数打包成这样,然后下次再碰到相似的题目就可以直接写上自己定义的头文件,直接调用自己定义的函数来解决问题,而不用再次重新写该函数。关于这件事还真可以实现,这就要提到今天的主题——链接库。

一、什么是静态链接库?


静态链接库(Static Library)包含一些由我们自己定义的变量与函数,在编译期间由编译器和链接器将它集成到可执行文件(.exe)中,在Window下的后缀名是.lib(听说在Linux下是.a)就是图中第四个,有些电脑似乎没有后缀,你也可以看图标(三杠)。静态链接库最终都会包装到.exe文件中,这样可以方便程序的移植,但也有很大的缺点,比如.exe文件过大、不易于程序更新等等,所以现在的软件大多都是用的动态链接库(.dll)。

二、静态链接库的建立与使用

1、静态链接库的建立

创建一个静态链接库项目

新建项目往下滑找到静态库

选择一个自己熟悉的文件夹

创建一个头文件

右键头文件添加一个新建项

选择头文件,建一个MS.h,点击添加

编写自己的静态库

这里以两个函数sub()减法,add()加法为例子

将鼠标点击一下add这里,然后按alt+回车,出现这几个选项,点击创建add的定义

在这里声明这个函数,对sub操作相同

生成静态库

右键自己静态库项目,点击生成

这样表示生成成功

这样我们就建立了自己的静态连接库,是不是十分简单,好了,建立好了,接下来我们就该使用它了

2、静态链接库的使用

创建一个新项目

右键解决方案->添加->新项目

创建一个空项目

添加一个源文件

写入自己定义的那个头文件


此时我们可以将其设为启动项来试一下

此时它会报几个错误,因为在它编译器中没有我们的头文件,并且add我们并未在函数中定义,所以我们要先将MS弄到编译器中去

右键引用,点击添加,将MS勾选,点击确定

右键我们的项目,点击属性

在c/c++常规中找到附加包含目录(这里就可以添加我们的头文件了)

在这里点击编辑

点击第一个(左上角有个加号的文件夹),然后点击这三个点

这时候就要回到开始了,找到我们创建静态库的文件夹,然后选择这个文件(MS)

最后点击应用就可以

然后我们就可以成功运行代码了

重新打开vs时

有一天,你打开vs准备做会题,你突然发现,你这个题目以前做过,而且刚好被你做成了静态库,哦豁,这不就刚好可以copy一下,好的,你准备使用了
首先,你碰到了这个问题,欧克,没事,我到csdn学了怎么搞,先添加一个引用

然后你发现,tnnd csdn骗我,我的MS呢???

然后你还是先把后面步骤做完了,抱着侥幸心理运行一下
对不起,还是报错,显示无法解析add函数

这个问题当时困扰我半天,我后面发现,你要引用的话,这个静态库就必须在解决方案里,你只要右键解决方案,添加一个现有项目

找到这个打开就可以了

这时候你发现引用里面又有了,然后勾选,就可以正常运行了。
你想,那不是每次都要去把这个打开吗,不会很麻烦吗?其实你也可以这样,打开你静态库的文件夹,找到这个MS.h这个文件,就时这个右下角有红标的

同时要找到前面提到的.lib文件,就在上图的debug里面

把这个两个文件复制到你这个项目的文件夹里,保证它们和这个源文件(.cpp)在同一个文件夹里就好

然后再你的代码中加入这样一段

#pragma comment(lib,“静态库名字.lib”)

这样你就可以不引用也可以正常使用了

总结

以上就是我关于vs2019建立静态库的见解,但由于我学疏才浅,对很多都不了解,其中看了很多大佬写的文章,但仍有很多不了解的地方,如果文章中有错误,希望各位大佬不吝赐教。尤其是最后那里,如果大佬们有更好的方法,希望可以教教我。

基于vs2019的静态链接库的创建与使用(超详细)相关推荐

  1. vc6.0静态链接库的创建与使用方法

    1.建立如下的工程 选择该界面的最后一个,即创建了一个静态链接库,注意填写工程的名称. 2.在该工程下创建lib.h和lib.cpp两个文件 lib.h中源代码如下: #ifndef LIB_H #d ...

  2. Qt:55---QT创建和使用静态链接库(.lib、.a)

    一.QT的静态链接库 QT创建一个静态链接库项目,设计各种需要导出的类,包括具有UI的窗体类.对话框类.编译后可以生成一个lib文件(MSVC编译器生成的文件后缀为".lib",M ...

  3. C++静态链接库(lib)的创建及调用

    C++静态链接库(lib)的创建及调用 1. 静态链接库的创建 2. 静态链接库的调用 1. 静态链接库的创建 首先在新建项目中,选择Visual C++,Win32控制台应用程序.这里我将新建的文件 ...

  4. 使用Visual studio中创建C++的静态链接库.lib文件附使用方式

    如何在Qt中使用静态库.lib(和VS一样,仅仅是操作方式略有差异) 如何在VS中创建.dll动态链接库.dll中函数与类的导出用__declspec(dllexport) 如何在Qt和VS中使用动态 ...

  5. C++自定义静态链接库

    目录 创建静态链接库项目 创建项目 ​ 创建函数 设置项目生成文件 生成lib 创建使用静态链接库项目 新建项目 设置库目录 链接静态库 声明需要使用的函数 使用extern 使用 头文件方式(推荐使 ...

  6. 静态链接库(.lib)和动态链接库(.dll)的使用

    静态链接库(.lib)和动态链接库(.dll)的使用 文章目录 静态链接库(.lib)和动态链接库(.dll)的使用 一.静态链接库 1. 静态链接库概述 2. 创建静态链接库 3. 调用静态链接库 ...

  7. 第五天2017/04/06(下午3:静态链接库(Lib))

    原文链接:http://blog.csdn.net/xiaoding133/article/details/8973436 一.静态链接库和动态链接库 1.静态链接库(.LIB):函数和数据被编译进一 ...

  8. VC的静态链接库 动态链接库

    1.什么是静态连接库,什么是动态链接库         静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了. ...

  9. 静态链接库(Lib)和动态链接库(DLL)

    序言:本文主要讲解静态链接库和动态链接库的区别,以及怎么样编译和引用两种库,怎么样从DLL中导出函数和导出C++类. 一.静态链接库和动态链接库 1.静态链接库(.LIB):函数和数据被编译进一个二进 ...

最新文章

  1. 消息幂等(去重)通用解决方案,真顶!
  2. ADMT3.2域迁移之Server2003至Server2012系列(七)安装ADMT3.2
  3. 结构控制Switch Case
  4. Learning Perl 8
  5. ORA-07445 [kkoipt()+3881] [SIGSEGV] [Address not mapped to object] 问题
  6. Ajax/REST 第1部分
  7. 前端项目里常见的十种报错及其解决办法
  8. Oracle plsqlI 练习 传值
  9. failed to load kernel library!处理办法
  10. 浙大PAT甲级1019. General Palindromic Number (20)
  11. 2018ACM上海大都会赛: A. Fruit Ninja(这绝对是道原题+随机)
  12. cmake编译.a/.so/bin(一)
  13. 40行代码爬取金庸所有武侠小说
  14. abp框架java_ABP框架的体系结构及模块系统讲解
  15. MAC笔记本下Android 反编译apk文件最新版本
  16. java osm pbf_OSM PBF 文件格式说明
  17. 再次携号转网_移动再次确认:这三个号段将不能携号转网!
  18. 开始愉快的学习编程了
  19. L9110S电机驱动——让小车动起来
  20. Eclipse中设置作者日期等Java注释模板

热门文章

  1. 统计代码量-代码统计工具 CLOC | gitlab统计代码量
  2. diy:自制作四种智能小电器
  3. Vue 学习笔记--自定义模板
  4. gitlab 挖矿病毒处理
  5. 年轻的优秀博士:网络牛人刘云浩,王新兵,朱其立
  6. android 美团下拉刷新,美团外卖下拉刷新效果实现方法
  7. 帝国理工计算机科学硕士学费,【帝国理工学院学费】帝国理工学院研究生学费费用解读...
  8. 【JS、一】js 基础
  9. 炮弹仿真系统matlab软件下载,基于Matlab/Simulink的导弹六自由度弹道仿真系统设计...
  10. 普通人如何架设一个简单的服务器攻略