1 静态库和动态链接库的区别

动态链接库是在运行的时候被调用的,静态库在链接的时候被链接到最终生成的应用程序(.exe)中

静态库需要用到的文件 (.lib .h)

头文件(.h)提供接口,库文件(.lib)提供实现

动态链接库需要用到的文件 (.dll .lib .h)

头文件(.h)提供接口,库文件(.lib)仅提供索引,动态链接库文件(.dll)提供实现

2 尖括号<>和双引号""引用.h文件的区别

尖括号<>会从VC++包含目录中寻找.h文件,一般是用于调用第三方库

双引号""会从项目配置属性中c/c++的附加包含目录寻找.h文件,一般是用于寻找工程内的.h文件

目录

Visual Studio项目环境配置

一. 静态库环境配置

1.1 添加静态库对应的头文件所在目录

1.1.1 使用尖括号<>引用头文件的配置

右键项目->属性->配置属性->VC++目录



点击包含目录,点击右边的下拉箭头,点击编辑,添加新的项,手动输入附加库头文件的路径



点击确定保存,这样就能保证我们能用<>引用我们想要使用的库的头文件了

1.1.2 使用双引号引用头文件的配置

要使用双引号""引用项目中的头文件的话,在配置属性->c/c++->附加包含目录中添加头文件所在路径即可





确定,完成配置

1.2 添加静态库所在目录

和添加包含目录同理,点击库目录,点击右边的下拉箭头,编辑,添加静态库所在目录



也可以在配置属性->链接器->常规->附加库目录中添加库所在路径

1.3 添加附加依赖项

右键项目->属性->配置属性->链接器->附加依赖项->编辑

添加依赖的lib文件名



到此位置lib的配置就结束了

1.4 测试以及常见错误

  1. 试着引用一下glfw库,没有出现红线说明我们的头文件包含目录没问题了

  2. 跑一下程序,如果出现LNK1104,说明库目录出了问题

  3. 出现LNK2019 无法解析的外部符号XXXXX,该符号在函数XXX被引用



    这种情况就是没有添加附加依赖项导致的

    总结一下配置静态库可能会出现的问题

二. 动态链接库环境配置

动态链接库可以在运行时被使用,调用动态库需要用到 .dll .lib .h三个文件,**其中.lib和.h文件的配置方式和静态库一样**,就不重新说一次了

2.1 设置.dll的环境

关键的一步是在项目的调试环境中添加.dll文件所在路径
右键项目->配置属性->调试->环境->编辑



输入PATH=附加库的路径1;附加库的路径2;附加库的路径3;…

每个路径用分号隔开



点击确定,保存

梳理一下动态链接库环境配置的流程

  1. 添加头文件(.h)所在路径到VC++的包含目录或者项目配置属性c/c++的附加包含目录中
  2. 添加静态库(.lib)所在路径到VC++库目录或者链接器的附加库目录中
  3. 添加附加依赖项到链接器的附加依赖项中
  4. 添加动态链接库(.dll)所在路径到项目调试环境中

在Visual Studio中使用.lib和.dll的环境搭建的更多相关文章

  1. Visual Studio中的lib的链接顺序

    描述:如果有一个exe工程,它依赖于A.lib,B.lib,A.lib和B.DLL我同样有他们的源码工程.依赖顺序是这样的exe->A.lib->B.DLL.那么如果我改动了B的源码,编译 ...

  2. Visual Studio Code安装以及C/C++运行环境搭建

    众所周知VSCode是全宇宙最好用的编辑器 (雾 配置了很久,今日终于配置完成了,还是有点麻烦的,本文是为了方便一些不懂怎么配置的小白,以及还有一些美化教程. 一.安装 Visual Studio C ...

  3. visual studio中新建和使用dll

    本文的目的是 创建一个最小化的dll并使用它 环境:win7 + vs2012 一个VS的解决方案(sln)下面可以有多个项目(project),所以这里新建一个解决方案,然后下面创建两个项目. 新建 ...

  4. Visual Studio问题集锦:coloader80.dll未正确安装

    问题 今天在修改之前的一个项目的时候报了一个错,大概内容如下: 有一个 Visual Studio 的 DLL 文件(coloader80.dll)未正确安装.请通过"控制面板"中 ...

  5. Visual Studio 中 Build 和 Rebuild 的区别

    因为之前写的程序比较小,编译起来比较快,所以一直都没有太在意 Build 和 Rebuild 之间的区别,后来发现两个还是有很大不同. Build 只针对在上次编译之后更改过的文件进行编译,在项目比较 ...

  6. Visual Studio中开发

    如何在Visual Studio中开发自己的代码生成器插件    Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代 ...

  7. 在Visual Studio 中开发Office Add-in

    作者:陈希章 发表于2017年7月13日 "Talk is cheap, show me the code",我们就用代码来说话吧.这一篇将给大家介绍如何开始Office Add- ...

  8. Visual Studio中的/MD, /MT, /MDd, /MTd 选项

    Visual Studio中/MD, /MT, /MDd, /MTd表示多线程模块是否为dll.对于这几个选项我的理解如下: /MD: 定义了_MT和_DLL,让程序用多线程和dll版本的运行库. / ...

  9. 在Visual studio 中解除 TFS 的账号绑定

    在Visual Studio中, 只要使用了TFS, 就会要求输入用户名密码验证 . 但是一旦点击验证对话框下部的:记住用户名密码 以后都不能再修改用户名了. 而且重装Visual Studio 听说 ...

随机推荐

  1. Python的unittest框架的断言总结

    常用的断言方法如下: assertFalse:为假时返回True:self.assertFalse(表达式,“表达式为true时打印的message”) assertTrue:为真时返回True:se ...

  2. JavaScript计算指定日期与当前日期的相差天数

    java中处理2个时间段相差几天很容易,直接调相关方法就行,不过js处理这类问题稍微有点不易,项目开发中也用到了,如下: 1 2 3 4 5 6 7 8 9 10 11 12 //计算两个日期天数差的 ...

  3. extjs_05_grid(表格分组)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  4. BZOJ3270:博物馆(高斯消元)

    Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n间房间,并且满足可以从任何一 ...

  5. 创建JDBCUtils工具类

    JDBCUtils工具类 私有化构造函数,外界无法直接创建对象 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接 提供公共的,静态的,close方法,用来释放资源 pac ...

  6. 记一次js之button问题

    问题描述:记得某天,发现一件让我非常气愤的事情,居然因为一个按钮导致页面跳转失败或者是根本跳转不了界面,哪怕404也不给我报. 问题回现步骤: (1)正常输入url localhost:8080/te ...

  7. C语言程序设计I—第四周教学

    第四周教学安排 第四周是本课程的第三次课,依然是我来讲解,学生听讲,也依然继续在寻找大班授课(100人).条件有限(民办学校教学经费投入不够)的情况下如何更好的组织教学. 教学内容 第二章 用C语言编 ...

  8. 轻量级IOC容器:Ninject

    Ninject是一个快如闪电.超轻量级的基于.Net平台的依赖注入框架.它能够帮助你把应用程序分离成一个个松耦合.高内聚的模块,然后用一种灵活的方式组装起来.通过使用Ninject配套你的软件架构,那 ...

  9. mac 设置mysql开机自启动

    1.编辑一个mysql启动文件. 在终端里面输入: sudo vi /Library/LaunchDaemons/com.mysql.mysql.plist 2.输入启动文件内容: <?xml ...

  10. 【Len's DMG】macOS Mojave 10.14.1 正式版 18B75 With Clover 4726原版镜像

    亮点:本次10.14.1正式版镜像更新config配置文件SMbios机型信息,让识别更趋于完善,自带去除10.14.1 USB端口限制补丁和最新USBInjectAll.kext,移除大量可能造成卡 ...