静态链接(Statically Linked)
目录 |
静态链接是指在编写应用程序时,如果需要调用运行函数库中已有的函数,程序员无须在自己的源代码中重写函数库中的函数,而只是给出函数名和所需要的参数,就可以执行相应的操作。
静态链接的优点是可以独立运行,不需要额外动态库的支持;缺点是生成的文件较大,一旦需要程序升级,则需要更新整个目标程序。
动态链接是相对于静态链接来说的。在程序开发过程中,产生一个Windows可执行文件,需要链接不同的目标模块(.obj)、库文件(.1ib)以及编译过的资源文件(.res),此时的链接称为静态链接,可见静态链接发生在程序进行编译/链接时,与之相对应,动态链接发生在程序运行时。
动态链接库和静态链接库的主要区别是与应用程序的链接方式不同,前者进行的是动态链接,后者进行的是静态链接。编写的应用程序中需要使用DLL,的应用程序,可以调用DLL中的导出函数,不过在应用程序本身的执行代码中并不包含这些函数的执行代码,它们经过编译和链接之后,独立的保存在DLL中。使用DLL的应用程序只包括了用于从DLL中定位所引用的函数的信息,而没有函数具体实现,要等到程序运行时才从DLL中获得函数的实现代码。显然,我们开发的使用了DLL的应用程序在运行时必须要有相应的DLL的支持。而使用静态链接库的应用程序从函数库中得到所引用的函数的执行代码,然后把执行代码放进程序自身的执行文件中,这样,应用程序在运行时就可以不再需要静态函数库的支持了。