什么是动态链接

动态链接是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源 。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用 。
什么是静态链接库?什么是动态链接库?他们有什么区别【什么是动态链接】静态库可以认为是一些目标代码的集合 。按照习惯,一般以"a"做为文件后缀名 。使用ar(archiver)命令可以创建静态库 。因为共享库有着更大的优势,静态库已经不被经常使用 。但静态库使用简单,仍有使用的余地,并会一直存在 。
静态库在应用程序生成时,可以不必再编译,节省再编译时间 。但在编译器越来越快的今天,这一点似乎已不重要 。如果其他开发人员要使用你的代码,而你又不想给其源码,提供静态库是一种选择 。从理论上讲,应用程序使用了静态库,要比使用动态加载库速度快1-5%,但由于莫名的原因,实际上可能并非如此 。由此看来,除了使用方便外,静态库可能并非一种好的选择 。

共享库
共享库是在程序启动时被装载 。当一个应用程序装载了一个共享库后,其它应用程序仍可以装载同一个共享库 。基于linux的使用方法,共享库还有其它灵活的而又精妙的特性:
更新库并不影响应用程序使用旧的,非向后兼容的版本;在执行特定程序时,可以覆盖整个库或更新库中的特定函数;以上操作不会影响已经运行的程序,他们仍会使用已经装载的库 。
动态链接与静态链接的区别,对SEO优化有什么影响静态链接,指的是页面的URL链接是固定的不会变化的,一般以htm、html、shtml等常见形式为后缀,而不含有“、=、&”等字符 。
动态URL又称动态链接,即指在URL中出现“、=、&” 这样的参数符号,并以“aspx、asp、jsp、php、perl、cgi”为后缀的连接 。
例如百度知道你提问的问题的链接就是动态的 。
静态链接更稳定一些,毕竟动态的内容会变化,搜索引擎蜘蛛更容易抓取镜头页面,静态页面的打开速度也会快一些,快照更新会更及时,目前搜索引擎还是偏向于静态链接的页面 。
请问静态链接和动态链接之间各有什么优缺点?动态链接是相对于静态链接而言的 。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分 。换句话说,函数和过程的代码就在程序的EXE文件中,该文件包含了运行时所需的全部代码 。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源 。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息) 。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系 。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码 。静态链接的执行程序能够在其它同类操作系统的机器上直接运行,比如一个EXE文件是在WIN2000系统上静态链接的,那么将该文件直接拷贝到另一台WIN2000的机器上,是可以运行的 。而动态链接的执行程序则不可以,除非把该EXE文件所需的DLL文件都一并拷贝过去,或者对方机器上也有所需的相同版本的DLL文件,否则是不能保证正常运行的 。不过静态链接得到的文件比较大,而动态链接得到的文件比较小 。
动态链接库(DLL)的作用是什么DLL为动态链接库文件
动态链接库的概念
在DOS环境下编过程序的读者一定知道静态库的含义——程序员将实现各种功能的代码写成一个个子程序(函数),编译成obj文件后,将多个obj文件组合成一个lib文件,当程序中要用到这些函数的时候,只需要指定函数名称,编译器就可以从库中抽出对应的子程序代码插入到可执行文件中去,这样就可以不必一遍遍地重写相同的功能代码 。这种链接方法就是静态链接,
静态链接的缺点显而易见,如果有多个程序用到库中的同样函数,那么所有这些可执行文件中都会包含一份同样的代码,对于每个程序几乎必须使用的一些函数来说,如果硬盘上有一万个程序用到这个函数,那么就存在一万份相同的代码,这显然是很浪费空间的 。静态链接的另外一个缺点是:如果某个函数因为发现有错或更新算法等种种原因需要升级版本时,必须把所有用到此函数的可执行文件都找回来重新编译一遍,遗漏的程序中存在的还是旧版本的代码 。