现在的位置: 首页 > 综合 > 正文

静态链接 和 动态链接

2013年10月08日 ⁄ 综合 ⁄ 共 734字 ⁄ 字号 评论关闭

说了好久的动态库,静态库,直到今天才弄明白到底这些东西是怎么回事。

 

需要注意的是三点:

1. 对于库文件来说,只有一种,那就是 *.lib 库文件,在这个文件里面是未经编译的函数集合,不能直接用的。它需要和各种 .obj  这种中间的目标文件一起参加链接,最后生成可执行文件。这里的可执行文件可以是 exe , 也可以是 dll , 各种……

        这其实就叫做使用库文件。

2. 静态链接,static linked dll

    静态链接是 在一个程序里,如果需要用到其他程序里的函数功能,就可以只包含 .h 头文件和 .lib 库引导文件, 这个.lib引导文件里面并没有真正的函数功能实现,只是一些系统引导信息。

    如果我们选择静态链接这个.h 和 .lib 所对应的 .dll  的话,在我们的程序开始运行的时候,即使这时候还不需要用到 .dll 里面的功能,这个.dll也已经被加载到整个程序里面了,到真正用到的函数的时候就可以直接用了。

    而如果我们选择了动态链接的方式来加载这个 dll, 在程序里面通常要用到 loadlibrary(*.dll) 这样的语句, 这就是说在我们的程序开始运行的时候,并不加载进来这个 dll, 而是到LoadLibrary()这条语句的时候才会把它加载进来,所以说,选择动态链接的可执行程序体积要比选择静态链接的可执行程序的体积小,因为对于动态链接来说,dll不是程序的一部分,也正是因为这个原因,静态链接在运行的时候,尤其是在使用到dll功能的时候就要比使用动态链接的程序要快一些。

 

 

    所谓静态链接和动态链接都是一种工程和其他可执行的 dll 之间结合的一种链接方式。

    而库文件就只是 .lib 这一种。无论采用静态链接还是动态链接,生成的真正的链接库就都是 DLL。

 

抱歉!评论已关闭.