链接库分为静态链接库和动态链接库,静态链接库只有一个.lib文件,而动态链接库则有一个.lib文件和.dll文件;静态链接库的.lib文件里面有函数真正实现的机器码,而动态链接库的.lib只有函数的符号名,真正的函数的实现在dll文件中。

当你使用静态库或者使用隐式的方式加载动态连接库的话,都需要将.lib文件加到vc工程里面去,他们的区别就在于,使用动态库的话,在运行程序时,需要额外将函数真正实现的dll文件放到程序的运行目录下或者程序默认的搜索路径下,而静态库则只要引入.lib文件后,就可以调用库中的函数。

在vc环境下将lib库引入工程,有下面3种方法:

第一种方法,lib文件直接加入到工程文件列表中。

在VC中打开“File View”一页,选中工程名,单击鼠标右键,然后在弹出的快捷菜单中选择【Add Files to Project】命令,在弹出的文件对话框中选中要加入dll的lib文件即可。
第二种方法,设置工程的【Project】菜单【Settings】来加载dll的lib文件

打开工程的【Project】菜单的【Settings】,选中【Link】,然后在“Object/library modules”下的文本框中输入dll的lib文件。

也可以在 项目属性\链接器\输入\附加依赖项中 增加***.lib

第三种方法,预编译指令导入

加入预编译指令#pragma comment(lib,”*.lib”),这种方法优点是可以利用条件预编译指令链接不同版本的lib文件。因为,在Debug方式下,产生的lib文件是Debug版本,如Regd.lib;在Release方式下,产生的lib文件时Release版本,如Regr.lib。

当然,在引入.lib文件后,工作并没有完成,为了解决编译问题,我们还需要将连接库中函数的对应的头文件(*.h)包含到其中,在这个头文件中给出了链接库中定义的函数原型。在编译完成后,连接器会去.lib文件中去查找函数的符号表,找到后,编译和连接工作就完成了;在运行的时候,再去dll文件中去找函数的真正实现(如果是静态库则直接在.lib文件中寻找函数的真正实现。)

ps:补充一句,关于加载动态链接库的两种方式隐式加载和显示加载,隐式加载就如上面所介绍的引入.lib文件,包含链接库的头文件,拷贝dll文件到运行目录下后就实现了隐式加载;而显示加载则是使用LoadLibrary和FreeLibrary来加载和卸载动态链接库,使用GetProcAddress函数来获取函数指针,然后通过函数指针来调用链接库中的函数。



vc如何引入lib库相关推荐

  1. Visual Studio引入外部库 ---- 弄懂静态库lib和动态库dll

    这两天由于想要研究一下socket的相关内容,但是没想到引入外部库还有这么多门道. 根据维基百科定义:一个现代编译器的主要工作流程如下:源代码(source code)→ 预处理器(preproces ...

  2. 如何在VC中调用第三方lib库(step by step)

    我们以调用Kvaser的库文件为例. 第三方的库一般会提供两个文件,一个是库文件.一个是头文件. Kvaser的库文件为canlib32.lib . 头文件为canlib.h 该库文件里,提供了一个名 ...

  3. 环境变量,include搜索路径,lib库搜索路径

    环境变量 系统环境变量 我们知道,我们经常要设置一些环境变量,系统环境变量我们非常容易理解.其实我们在windows中经常容易接触.其实环境变量是一个非常广泛的一个概念,它与web应用程序中的web. ...

  4. python怎么安装requests库-Python3.6安装及引入Requests库的实现方法

    本博客可能没有那么规范,环境之类的配置.只是让你直接开始编程写python. 至于各种配置网络上有多种方法. 本文仅代表我的观点的一种方法. 电脑环境:win10 64位 第一步:下载python. ...

  5. .h头文件 .lib库文件 .dll动态链接库文件关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  6. 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    文章目录 I . CMake 简介 II . Android Studio 中 CMake 引入静态库流程 III . 指定 CMake 最小版本号 IV . 导入函数库 ( 静态库 / 动态库 ) ...

  7. .h头文件 .lib库文件 .dll动态库文件之间的关系

     .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和li ...

  8. mac下Clion与QT引入FFmpeg库

    mac下Clion与QT引入FFmpeg库 目录 ffmpeg路径 Clion引入ffmpeg库 QT引入ffmpeg库 1. ffmpeg路径 /usr/local/Cellar/ffmpeg/4. ...

  9. python用代码安装3.6_Python3.6安装及引入Requests库的实现方法

    本博客可能没有那么规范,环境之类的配置.只是让你直接开始编程写python. 至于各种配置网络上有多种方法. 本文仅代表我的观点的一种方法. 电脑环境:win10 64位 第一步:下载python. ...

  10. vs编译c语言停止工作运行库mt,vc++编译时运行库选择(/MT/MTd/MD/MDd)

    vc++编译时运行库选择(/MT/MTd/MD/MDd) vc++编译时运行库选择(/MT./MTd./MD./MDd) 在vs中,项目属性 ->C/C++ ->代码生成 ->运行库 ...

最新文章

  1. 基于Arduino ATmega328人脸识别IOT演示门锁
  2. pythoning ——3、数据类型(字符串)
  3. 对比学习系列论文SDCLR(二)-Self-Damaging Contrastive Learning
  4. 2018年4月1日 蓝桥杯 C/C++B组答案 明码
  5. 虚拟化运行[OpenStack] VMWare产品介绍
  6. Java集合框架使用总结
  7. python信用卡客户_Python之信用卡模拟程序
  8. oracle9i如何卸载,如何卸载oracle 9i
  9. TPC_mcgs打印方案
  10. 你现在还在自己洗碗?教你制作单片机的洗碗机控制器
  11. hrbust 1864人类希望——kokoⅠ【数学+快速幂】
  12. 【视频通话卡顿】【语音通话卡顿】PC端QQ、微信每天接通语音电话或视频通话总会出现首卡半分钟左右的童鞋请进
  13. 数据结构习题集作业代码(第一章)
  14. 龙ol服务器维护补偿boss,总裁酷炫狂霸拽 《龙OL》练武场深处的BOSS
  15. 操作系统内存换入-请求调页---14
  16. 音视频技术开发周刊 | 260
  17. win7桌面图标突然消失,鼠标右键不管用―解决
  18. 二维码读取之ecc200_small_modules_robustness.hdev
  19. android屏幕密度高度,android分辨率,屏幕尺寸,屏幕密度关系
  20. TensorRT及PyCUDA安装记录

热门文章

  1. linux下桌面快捷方式无法打开,亲测可用:Linux下桌面快捷方式创建实例
  2. 处理一些 Vue warn 和 sonar 扫描报错
  3. hugo部署到Githut Pages
  4. blos硬盘启动台式计算机,bios设置硬盘启动,最全的bios设置硬盘启动详细方法(两种模式)...
  5. Mac10.14版本安装虚拟机Parallels Desktop 14和windows7 64位旗舰版镜像
  6. Oracle EBS SLA Custom Sources(自定义来源)
  7. android 设置路由器,192.168.1.1路由器设置手机登陆
  8. 二进制编码及浮点数表示
  9. 彻底解决Ubuntu18.04搜狗拼音输入法问题---支持Pycharm、WPS
  10. 如何查看Safari浏览器network里Request的Payload