静态库和动态库共享库

上传人:ji****72 文档编号:35858788 上传时间:2018-03-21 格式:DOCX 页数:2 大小:15.91KB
返回 下载 相关 举报
静态库和动态库共享库_第1页
第1页 / 共2页
静态库和动态库共享库_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《静态库和动态库共享库》由会员分享,可在线阅读,更多相关《静态库和动态库共享库(2页珍藏版)》请在金锄头文库上搜索。

1、静态库与动态库的区别静态库与动态库的区别lib 和 dll 文件的区别和联系 .dll 是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll 还有其他的文件格式如.ocx 等,所有的.dll 文件都是可执行。 .lib 是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的 lib 文件在那里。一般来说,与动态连接文件相对比,lib 文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用 lib 文件,就必须: 1。 包含一个对应的头文件告知编译器 lib 文件里面的具体内容 2。 设置 lib 文件允许编

2、译器去查找已经编译好的二进制代码 如果你想从你的代码分离一个 dll 文件出来代替静态连接库,仍然需要一个 lib 文件。这个 lib 文件将被连接到程序告诉操作系统在运行的时候你想用到什么 dll 文件,一般情况下,lib 文件里有相应的 dll 文件的名字和一个指明 dll 输出函数入口的顺序表。如果不想用 lib 文件或者是没有 lib 文件,可以用 WIN32 API 函数 LoadLibrary、GetProcAddress。事实上,我们可以在 Visual C+ IDE 中以二进制形式打开lib 文件,大多情况下会看到 ASCII 码格式的 C+函数或一些重载操作的函数名字。 一般

3、我们最主要的关于 lib 文件的麻烦就是出现 unresolved symble 这类错误,这就是 lib 文件连接错误或者没有包含.c、.cpp 文件到工程里,关键是如果在 C+工程里用了 C 语言写的 lib 文件,就必需要这样包含: extern “C“ #include “myheader.h“ 这是因为 C 语言写的 lib 文件没有 C+所必须的名字破坏,C 函数不能被重载,因此连接器会出错C 语言中有一些函数不需要进行编译,有一些函数也可以在多个文件中使用。一般来说,这些函数都会执行一些标准任务,如数据库输入/输出操作或屏幕控制等。可以事先对这些函数进行编译,然后将它们放置在一些

4、特殊的目标代码文件中,这些目标代码文件就称为库。库文件中的函数可以通过连接程序与应用程序进行连接。这样就不必在每次开发程序时都对这些通用的函数进行编译了。 不同类型的应用程序将会使用不同的函数库。例如:libdbm 库中组包含了对数据库文件进行访问的dbm 函数,需要对数据库进行操作的程序就会与该库进行连接。数学应用程序将使用数学库 libm,X-Windows 应用程序将使用 Xlib 库,libX11。另外,所有的程序都将使用标准的 C 函数库。libc,该库中包含了诸好内存管理或输入输出操作的基本函数,这些库都存放在/usr/lib 这些系统公用的目录中,系统中的任何用户都可以利用这些库。当然用户也可以建立自己专用的库函数,供自己或其它指定的人员使用。库可以有三种使用的形式:静态、共享和动态。静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库只是在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数。动态库则是共享库的另一种变化形式。动态库也是在程序运行时载入,但与共享库不同的是,使用的库函数不是在程序运行开始,而是在程序中的语句需要使用该函数时才载入。动态库可以在程序运行期间释放动态库所占用的内存,腾出空间供其它程序使用。由于共享库和动态库并没有在程序中包括库函数的内容,只是包含了对库函数的引用,因此代码的规模比较小。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号