资源预览内容
第1页 / 共2页
第2页 / 共2页
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
静态库与动态库的区别静态库与动态库的区别lib 和 dll 文件的区别和联系 .dll 是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll 还有其他的文件格式如.ocx 等,所有的.dll 文件都是可执行。 .lib 是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的 lib 文件在那里。一般来说,与动态连接文件相对比,lib 文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用 lib 文件,就必须: 1。 包含一个对应的头文件告知编译器 lib 文件里面的具体内容 2。 设置 lib 文件允许编译器去查找已经编译好的二进制代码 如果你想从你的代码分离一个 dll 文件出来代替静态连接库,仍然需要一个 lib 文件。这个 lib 文件将被连接到程序告诉操作系统在运行的时候你想用到什么 dll 文件,一般情况下,lib 文件里有相应的 dll 文件的名字和一个指明 dll 输出函数入口的顺序表。如果不想用 lib 文件或者是没有 lib 文件,可以用 WIN32 API 函数 LoadLibrary、GetProcAddress。事实上,我们可以在 Visual C+ IDE 中以二进制形式打开lib 文件,大多情况下会看到 ASCII 码格式的 C+函数或一些重载操作的函数名字。 一般我们最主要的关于 lib 文件的麻烦就是出现 unresolved symble 这类错误,这就是 lib 文件连接错误或者没有包含.c、.cpp 文件到工程里,关键是如果在 C+工程里用了 C 语言写的 lib 文件,就必需要这样包含: extern “C“ #include “myheader.h“ 这是因为 C 语言写的 lib 文件没有 C+所必须的名字破坏,C 函数不能被重载,因此连接器会出错C 语言中有一些函数不需要进行编译,有一些函数也可以在多个文件中使用。一般来说,这些函数都会执行一些标准任务,如数据库输入/输出操作或屏幕控制等。可以事先对这些函数进行编译,然后将它们放置在一些特殊的目标代码文件中,这些目标代码文件就称为库。库文件中的函数可以通过连接程序与应用程序进行连接。这样就不必在每次开发程序时都对这些通用的函数进行编译了。 不同类型的应用程序将会使用不同的函数库。例如:libdbm 库中组包含了对数据库文件进行访问的dbm 函数,需要对数据库进行操作的程序就会与该库进行连接。数学应用程序将使用数学库 libm,X-Windows 应用程序将使用 Xlib 库,libX11。另外,所有的程序都将使用标准的 C 函数库。libc,该库中包含了诸好内存管理或输入输出操作的基本函数,这些库都存放在/usr/lib 这些系统公用的目录中,系统中的任何用户都可以利用这些库。当然用户也可以建立自己专用的库函数,供自己或其它指定的人员使用。库可以有三种使用的形式:静态、共享和动态。静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库只是在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数。动态库则是共享库的另一种变化形式。动态库也是在程序运行时载入,但与共享库不同的是,使用的库函数不是在程序运行开始,而是在程序中的语句需要使用该函数时才载入。动态库可以在程序运行期间释放动态库所占用的内存,腾出空间供其它程序使用。由于共享库和动态库并没有在程序中包括库函数的内容,只是包含了对库函数的引用,因此代码的规模比较小。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号