动态链接库DLL与静态链接库LIB
1)DLL 作用: 1.有助于促进代码重用和内存的效率使用 2.让程序模块化,有利于程序的维护 2.)DLL两种链接方法 1.隐式链接 把.dll和.lib文件导入到项目路径中去 #include"xxxdll.h" #pragma comment(lib,"xxxdll.lib") 2.显式链接 DLLFunc dllFunc; HINSTANCE hInstLibrary = LoadLibrary("DLLSample.dll"); if (hInstLibrary == NULL) { FreeLibrary(hInstLibrary); } dllFunc = (DLLFunc)GetProcAddress(hInstLibrary, "TestDLL") if (dllFunc == NULL) { FreeLibrary(hInstLibrary); } dllFunc(123); FreeLibrary(hInstLibrary);
3)dll可以有自己的数据段但是没有自己的堆栈,使用dll的进程要分dll分配相应的内存,如果将类封装成dll,那么使用那个dll进程就要分配对象所需的内存,如果将函数分装成dll,那么使用那个dll中的某个函数的进程只需分配相应的函数的内存。如果将类封装成dll,使用它的时候占用的内存时间会比把函数分装成dll来使用的时间长。 4)静态链接库 1.对函数库的链接是放在编译时期完成的 2.程序在运行时与函数库再无瓜葛,移植方便 3.浪费空间和资源,因为所有相关的目标文件与涉及到的函数库被链接和成一个可执行文件。