VS中lib和dll

转载:


http://www.cnblogs.com/Yogurshine/archive/2013/06/14/3136025.html

Lib文件

先来说一说lib文件,C++中lib文件主要有两类,一种是静态的编译连接,叫做静态链接库,另一种是动态的编译链接,和Dll文件一起使用,在该小标题下,主要说一下静态链接库,另一种将在Dll文件中讲解。所谓的静态链接库,就是以.lib结尾的文件(由于有动态的编译链接的lib存在,因此并不是所有的.lib文件都是静态链接库文件),该文件可以通过VS2005建立工程,然后将项目属性中的输出设置成lib形式,编译后就可以生成一个.lib文件,这就是静态链接库。

  • 我们如何使用生成的.lib文件呢?

为了可以使用.lib文件,我们需要刚刚生成的.lib文件,以及它所对应的头文件.h,因为.lib文件无法直接访问,且无法得知其接口,因此需要对应的头文件。假设现在有一个工程需要使用该lib文件,首先需要在工程属性中将.h文件的路径设置好,在文件中使用#include将头文件包含然后对于lib文件,需要在工程属性中,设置其路径(或者直接放在工程文件的目录下,因为工程查找文件时是以工程文件所在路径为相对路径查找),然后类似opencv一样,在项目属性中,linker->input中输入要使用的lib名(或者使用program**,在文件中用语句将其写入(推荐)),这样配置就结束了。

  • lib文件如何起作用?

当工程在编译的时候,系统就会将lib中的函数的实现插入到生成的exe中,从而完成其作用,因此我们知道,当lib很大的时候,最后生成的exe文件会相当的大,因为将需要的lib都加载到了最终的exe中。

(补充:VS程序编译过程:预处理(.h文件展开、宏。。。。)——》编译(每个.cpp分别编译,)——》连接(链接静态库,即把lib中的函数实现插入并生成exe))这个后面专门写个日志,详细说说。

DLL文件

了解了上面的内容后,Dll的理解就方便多了。DLL文件被称为动态链接库。我们可以通过使用工程建立他们,在建立的时候首先建立一个空项目,然后将输出设置成dll,然后在主函数前使用***,意思是将该文件函数以dll文件导出,然后编译后生成了.lib文件和dll文件,其中的dll文件就是动态链接库,但是要注意这里的.lib文件就是上面所说的另一种lib文件,不同于静态链接库的lib文件(该lib文件中货真价实的是函数的实现),该lib文件中没有函数的实现,而也是一些定义以及配置,真正的函数的实现存在于dll文件中。

  • 我们如何使用生成的.lib和dll文件呢?

要想使用dll文件,需要其对应的头文件.h,lib以及动态链接库dll文件。前两者的配置和上面一样,dll直接放到exe文件下即可。

  • lib和dll文件如何起作用?

当一个工程在编译的时候,dll配套的lib文件将被使用,用来安插和dll文件的接口,但是不会将函数的实现放到最终的exe中,当exe程序在使用的时候,会动态的从对应的dll文件中调出需要的函数。因此这种方式使得exe文件不至于很大,而且方便应用程序的修改和升级。

总之,以lib形式发布程序的时候,只有一个exe,而以dll形式发布程序的时候,需要exe与dll同时存在。




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

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

相关文章

32位md5解密_冰蝎特征检测及报文解密

点击“蓝字”关注我们,不迷路~‍‍前言19年驻场于某金融单位。参加19年9月、11月两次攻防演练,负责攻防演练组织、技术支持和复盘。期间,多个攻击队伍使用冰蝎 webshell ,防守方监测时确实各 IDS 确实报出 webshell 连接&#xff…

使用extern C改善显式调用dll

extern "C"的简单解析 我们前面介绍了显式调用dll的方法,例如 http://www.cnblogs.com/laogao/archive/2012/12/07/2806528.html ,其中在GetProcAddress第二个参数的填写煞费苦心,我们需要比较麻烦…

《移动App测试的22条军规》—App测试综合案例分析23.13节测试微信App的流量和电量消耗...

本节书摘来自异步社区《移动App测试的22条军规》一书中的App测试综合案例分析,第23.13节测试微信App的流量和电量消耗,作者黄勇,更多章节内容可以访问云栖社区“异步社区”公众号查看。 23.13 测试微信App的流量和电量消耗关于微信App消耗流…

UVA 10269 Super Mario,最短路+动态规划

这个题目我昨晚看到的,没什么思路,因为马里奥有boot加速器,只要中间没有城堡,即可不耗时间和脚力,瞬间移动不超过L距离,遇见城堡就要停下来,当然不能该使用超过K次。。。我纠结了很久&#xff0…

python做数据可视化的代码_Python数据可视化正态分布简单分析及实现代码

Python说来简单也简单,但是也不简单,尤其是再跟高数结合起来的时候。。。 正态分布(Normaldistribution),也称“常态分布”,又名高斯分布(Gaussiandistribution),最早由A…

ACdream 1061(abs用法)

题目链接:http://acdream.info/problem?pid1061 主要是abs用法,看题目的数据 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 unsigned long long的最大值:18446744073709551615 由题…

wpf window 不执行show 就不能load执行_Numpy反序列化命令执行漏洞分析(CVE-2019-6446)附0day...

1、介绍 NumPy 是 Python 机器学习库中之一,主要对于多为数组执行计算。NumPy 提供大量的 函数和操作,能够帮助程序员便利进行数值计算。在 NumPy 1.16.0 版本之前存在反序列化 命令执行漏洞,用户加载恶意的数据源造成命令执行。2、环境 软件…

使用Def文件导出dll

前面我们介绍了dll的生成,大多数是使用extern "C"__declspec(dllexport)函数名的方法导出dll。其实我们还有另一种方法来导出dll。 先介绍参考文献: 1.dll导出声明相关 2.VS2012中 C创建DLL图解 3.DLL中导出函数的两种方式(dllexport与.…

HDU 1003 Maxsum

题目大意&#xff1a;求出数列的最大子段和&#xff0c;并且说明是从第几项至第几项。 题解1&#xff1a;简单贪心。 #include <cstdio> #define rep(i,n) for(int i1;i<n;i) int main(){int t,l0;scanf("%d",&t);while(t--&&l){if(l!1)printf…

《JavaScript面向对象精要》——1.8 原始封装类型

本节书摘来自异步社区《JavaScript面向对象精要》一书中的第1章&#xff0c;第1.8节&#xff0c;作者&#xff1a;【美】Nicholas C. Zakas著&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.8 原始封装类型 JavaScript中一个最让人困惑的部分可能就是原始…

XML语法学习

本文章集合两篇博文而写&#xff0c;两篇博文地址&#xff1a; XML学习总结(二)——XML入门&#xff1a; XML基础<第一篇> XML简介 XML是一种标记语言&#xff0c;用于描述数据&#xff0c;它提供一种标准化的方式来来表示文本数据。XML文档以.xml为后缀。需要彻底注…

FM实现F4帮助系列三:弹出框多筛选…

FM实现F4帮助系列三&#xff1a;弹出框多筛选条件的搜索帮助&#xff08;根据搜索帮助筛选字段&#xff09;函数&#xff1a;F4IF_GET_SHLP_DESCRF4IF_START_VALUE_REQUEST效果图&#xff1a;本例子代码&#xff1a;找到需要的帮助:*&------------------------------------…

[数分提高]2014-2015-2第9教学周第1次课 (2015-04-28)

设 $$\bex a,b>0,\quad 0\leq f\in \calR[a,b],\quad \int_a^b xf(x)\rd x0. \eex$$ 试证: $$\bex \int_a^b x^2f(x)\rd x\leq ab \int_a^b f(x)\rd x; \eex$$ 并给出使得下列不等式成立的 (您认为的) 最优数: $$\bex \int_a^b x^3f(x)\rd x\leq (\quad) \int_a^b f(x)\rd x…

《计算复杂性:现代方法》——0.2 判定问题/语言

本节书摘来自华章计算机《计算复杂性&#xff1a;现代方法》一书中的第0章&#xff0c;第0.2节&#xff0c;作者 &#xff3b;美&#xff3d;桑杰夫阿罗拉&#xff08;Sanjeev Arora&#xff09;&#xff0c;博阿兹巴拉克&#xff08;Boaz Barak&#xff09;&#xff0c;译 骆吉…

python从date目录导入数据集_使用python划分数据集

无论是训练机器学习或是深度学习&#xff0c;第一步当然是先划分数据集啦&#xff0c;今天小白整理了一些划分数据集的方法&#xff0c;希望大佬们多多指教啊&#xff0c;嘻嘻~ 首先看一下数据集的样子&#xff0c;flower_data文件夹下有四个文件夹&#xff0c;每个文件夹表示一…

开源牛人 zcbenz

事情是这样的&#xff0c;微软推出了Visual Studio Code&#xff0c;我很好奇他怎么做跨平台的&#xff0c;所以就找找资料&#xff0c;在他的网站中是这么描述的&#xff1a; Architecturally, Visual Studio Code combines the best of web, native, and language-specific t…

eclipse 与 tomcat 的那些路径

我们用mvn创建了一个web工程&#xff0c;同时希望在eclipse里调试开发。mvn有mvn的路径要求&#xff0c;eclispe有eclipse的默认路径&#xff0c;怎么整合二者&#xff1f; 首先介绍一下eclipse的默认路径。 重点在Server Locations里面。 下面我们把[workspace]/.metadata\.pl…

boost解析xml文件

前面我们介绍了xml文件&#xff0c;今天我们试着用boost库来解析xml文件。我们将举两个例子来说明怎么使用。 来自boost官方的例子 先看xml文件的内容&#xff1a; <debug><filename>debug.log</filename><modules><module>Finance</modul…

使用网桥模式(bridge networking mode)配置KVM-QUME虚拟机网络

&#xff08;1&#xff09;linux要工作在网桥模式&#xff0c;所以必须安装两个RPM包。即&#xff1a;bridge-utils和tunctl。它们提供所需的brctl、tunctl命令行工具。能够使用yum在线安装&#xff1a; [rootserver3 ~]# yum install bridge-utils &#xff08;2&#xff09;查…

python数据处理常用函数_pandas数据分析常用函数总结大全:上篇

基础知识在数据分析中就像是九阳神功&#xff0c;熟练的掌握&#xff0c;加以运用&#xff0c;就可以练就深厚的内力&#xff0c;成为绝顶高手自然不在话下&#xff01; 为了更好地学习数据分析&#xff0c;我对于数据分析中pandas这一模块里面常用的函数进行了总结。整篇总结&…