dll和lib的关系(转)】的更多相关文章

转自http://blog.163.com/zhengjiu_520/blog/static/3559830620093583438464/ 前面有一章说编译与链接的,说得很简略,其实应该放到这一章一块儿来说的.许多单讲C++的书其实都过于学院派,对于真实的工作环境,上百个源文件怎么结合起来,几乎没有提及.我引导读者一步步看看lib与DLL是怎么回事. 一个最简单的C++程序,只需要一个源文件,这个源文件包含了如下语句 int main(){return 0;} 自然,这个程序什么也不做. 当需…
对于dll和lib两者的关系,需要理解的一个概念是编译时和运行时.   lib是编译时的东西,在lib里面包含了方法名和方法所在的dll名字,可以用dumpbin -all XXX.lib查看内容. dll是运行时的东西,里面是方法的实体.可以通过depends查看里面的方法和引用的dll文件等.   举个例子方便理解: 有两个project,A和B,A的输出是一个动态dll,B的输出是一个exe.B需要用到A里面的类和方法等. 首先是对A的处理:要把A的类或方法定义为“导出型”,即使用关键字_…
VS2010 C++环境下DLL和LIB文件目录及名称修改 转自:http://blog.csdn.net/archielau/article/details/8507581 DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置: 1.配置属性-常规-目标文件名 $(ProjectName) 加d 2.配置属性-连接器-常规-输出问件 由 加d 3.配置属性-连接器-高级-导入库,设置文件名$…
简要的介绍一下在微软开发工具中(VC)静态链接库和动态链接库生成过程中出现的.dll  .lib  .def 和 .exp文件类型.windows平台上可执行文件可能是一个.exe文件也可能四个.dll文件.当然也有一些比较特别的exe或者dll文件,不过他们有其他样式的后缀名比如屏保程序(.scr),ActiveX DLL 用的.ocx 还有各种驱动使用的各种扩展名.这里我们不讨论.com 和一些脚本文件比如.bat .cmd等,虽然他们仍然是可执行文件. 库就是包含着一坨数据和代码的东西,这…
转:http://blog.csdn.net/galaxy_li/article/details/7411956 1:神马是Dll和Lib,神马是静态链接和动态链接 大家都懂的,DLL就是动态链接库,LIB是静态链接库.DLL其实就是EXE,只不过没main. 动态链接是相对于静态链接而言的.所谓静态链接就是把函数或过程直接链接到可执行文件中,成为可执行程序中的一部分,当多个程序调用同样的函数时,内存里就会有这个函数的多个拷贝,浪费内存资源.而动态链接则是提供了一个函数的描述信息给可执行文件(并…
连续几天终于将一个又一个问题解决了,这里说其中一个问题 描述问题:使用多线程pthread的时候,(我用的IDE,CODEBOLCKS)编译后发现直接弹出窗口,程序还没有被Build..巴拉巴拉,然后陷入了这个循环.提示有一句pthead_create未定义. 发现:pthread要用到动态链接库(libpthread.a)才能使用. 解决办法:后来在setting->complies and link->link setting里面加入了系统中这个文件的地址. 详细查了一下,.a与.so的区…
静态库 库(Library)就是一段编译好的二进制代码,加上头文件就可以使用. 静态链接库(Windows 下的*.lib, Linux & Mac 下的 .a).之所以叫做静态,是因为静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了. 优点: 1.编译完成之后,库文件实际上就没有作用了.目标程序没有外部依赖,直接就可以运行. 2.代码装载速度快,执行速度略比动态链接库快. 缺点: 1.会使用目标程序的体积增大. 2.包含相同的公共代码,造成浪费,扩展性较…
(1) .dll .obj .lib使用在windows平台下.        .dll:动态链接库,作为共享函数库的可执行文件.        .obj:目标文件,相当于源代码对应的二进制文件,未经重定位. .lib:可理解为多个obj的集合,本质与.obj相同. (2) .so .o .a使用在linux平台下.        .so:(share object)动态链接库,跟Windows平台类似.        .o: 目标文件,相当于源代码对应的二进制文件.        .a: 与.…
关于lib和dll的区别如下:(1)lib是编译时用到的,dll是运行时用到的.如果要完成源代码的编译,只需要lib:如果要使动态链接的程序运行起来,只需要dll.(2)如果有dll文件,那么lib一般是一些索引信息,记录了dll中函数的入口和位置,dll中是函数的具体内容:如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中.使用静态编译的lib文件,在运行程序时不需要再挂动态库,缺点是导致应用程序比较大,而且失去了动态库的灵活性,发布新版本时要发布新的应用程序才行.(3…
2.是关于如何加载dll或lib库的.可以看这篇bog   Qt调用dll中的功能函数点击打开链接 **************************************************************************************************************************************************** 声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的.并且用我前两篇有…