如何正确的使用静态链接库和动态链接库?
动态库和静态库
在Win下,动态库以。dll和静态库以。lib。
在Linux下,动态库文件以。静态库以。a.
在Mac下,动态库以。dylib和静态库以。a.
动态图书馆的利与弊
动态函数库在编译时并没有编译成目标代码,只有在你的程序执行相关函数时才会调用函数库中对应的函数,所以动态函数库生成的可执行文件比较小。因为函数库不是集成到你的程序中,而是在程序运行时动态应用和调用的,所以程序的运行环境中必须提供相应的库。动态函数库的改变不影响你的程序,升级动态函数库更方便。
当一个程序在运行时调用一个动态链接库函数时,操作系统首先查看所有正在运行的进程,看是否有人加载了这个库。有就直接用。如果没有,它将被加载。这样做的第一个好处是节省内存空间。动态调入意味着要等到需要的时候,而不是不管用不用都先放在内存里。
如果我想升级一些软件。如果升级位置在dll中,则软件的其他部分不需要重新编译链接。所以升级方便。
静态库的优点和缺点
静态函数库编译的文件比较大,因为整个函数库在编译的时候会集成到目标代码中,它的优势很明显,就是编译的执行程序不需要外部函数库的支持,因为使用的函数都已经编译好了。当然这也会是他的缺点,因为如果你的静态链接函数库发生了变化,那么你的程序就必须重新编译。
代码更加精简,因为不需要进行版本检查。
当程序被分发时,文件的数量很少,因为它是静态链接到源文件的。
仅编译库中使用的部分,而不是整个库。
生成的二进制文件会占用更多空间。
重复的库可能出现在多个进程中,浪费内存。
如果库内部更新,二进制文件需要重新编译。
Linu台的静态库
静态库的生成
静态库的链接
Linu台的动态库
动态库的生成
动态库的链接
Windows平台的静态库
静态库/MT的生成使用编译来创建多线程可执行文件。生成静态库lib。
静态库的链接。使用链接库在代码开头添加,第二行是链接库中要调用的函数:
2.把要调用的链接库的lib放到项目源代码中,进行编译。你不编译时不需要动态链接库。这里静态部分lib编译成exe,动态库dll没用。)
3.运行前将dll放在exe目录中。
Windows平台的动态库
动态库/MD的生成使用编译来创建多线程dll。生长变成一个动态图书馆。
动态库的链接1,LoadLibrary(或者MFC的AfxLoadLibrary),加载动态库。
,获取要引入的函数,将符号名或标识号转换成DLL的内部地址。
(或MFC的AfxFr
mfc中怎样往类里加成员函数?
首先选择CLASSVIEW,然后右键单击需要添加成员函数的类,选择ADDMEMBERFUNCTION打开一个对话框,比如publicintadd(inty,intx)。
;functiontyp:intfunctiondecar:Add(inty,intx)ac:选择public的最后两个staticvirtual。如果你的函数是静态的,选择静态;如果是虚拟的,选择虚拟。这样,成员函数就成功地添加到了类中。