您的位置:首页 > 其它

静态连接库和动态链接库的区别

2009-10-10 15:31 204 查看
windows下, 库可以通过以下两种方式来发布: static link library和dynamic link library.一般我们称之为静态库和动态库(DLL)。

什么是静态连接库(static link library),什么是动态链接库(dynamic link library)
首先,静态链接库与动态链接库都是共享代码的方式。
如果采用静态链接库,则无论你愿不愿意,lib 中的定义都全部包含在最终生成的 EXE 中。
但是若使用动态库(DLL),该动态库可以不需要被包含在最终EXE文件。动态库可在应用程序初始化时或运行时被加载到应用程序的地址空间里。另外,动态库可以被多个应用程序共享。windows上的许多重要的库都是DLL。他们被许多应用程序所共享。
静态链接库和动态库(DLL)的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。

静态链接库和动态链接库在开发和使用上的区别:
静态链接库编译后的文件格式是*.lib.
所以用户只需要库的开发者提供库的.h头文件和.lib文件。

而开发静态库时, 你只需要在头文件声明函数或者类,然后再实现文件里实现函数或类就可以了。
使用的时候,.h头文件加到工程里,然后再指定要链接的.lib文件,就可以了。
可用#pragma comment(lib, "libfilepath")来指定要链接的静态库。或者在project->dependency里设置。

对于动态链接库(DLL):
动态链接库的使用需要库的开发者提供生成的.lib文件和.dll文件(隐式使用DLL,编译期链接)。或者只提供dll文件(采用loadlibrary显式使用DLL,此时为运行期装载)。
而DLL的开发和使用,则需要导出和导入的声明了。关于动态链接库,建议你最好看一下windows via c++(中文译名windows 核心编程)。那本书里讲的很清楚很透彻。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: