接触VC之四:COM组件模型基础
2006-07-19 11:36:48 来源:WEB开发网嗯,讲得很清楚。动态链接库首先是一个可执行文件(微软解释说,exe叫做起直接可执行文件),它里面包含着一组需要共享的函数。当使用时,动态链接库(和Windows系统)会提供一个方法来使我们的应用程序可以调用其中的函数。此外,动态链接库还会包含一些资源(如:图标、对话框模板等等)。在MFC中,微软在现有动态链接库的基础上施用了一些技巧来提供一些另外功能,如MFC类的导出。
动态链接库的链接方式大致分为两类: 静态链接和动态链接.
静态链接又叫隐式链接,这种链接方式使我们在代码中不用语句来指示系统中,我们的应用程序要加载哪些动态链接库。其静态链接声明是放在工程属性中的(或者使用#pragma comment(lib,"XXX.lib"),这个可以和#include放在一起)。在指定时,只需要输入其动态链接库相应的导入库文件(.lib)。然后,你就可以在程序的任何地方像调用普通函数一样调用该动态链接库中存在的函数了(当然,你需要包含其相应的头文件。一般情况下,头文件会和LIB文件一块给出)。通过这种方法生成的程序在运行初始化的时候(具体到什么时候不太清楚。但我可以肯定是在WinMain函数之前了^_^),会自动将动态链接库加载在系统环境中,并将其映射到我们应用程序的进程当中去。当我们调用一个我们进程没有定义的函数时,VC运行库会通过查找LIB文件的相关信息找到相应动态链接库的函数并调用它。进程结束时,系统会缷载动态链接库。
动态链接又叫显式链接,顾名思义这种方式让我们必需在代码通过调用API来显式地加载动态链接库。COM组件模型全部都是采用这种方式来加载进程内组件模块(就是Dll)的。(我觉得微软的专业术语有些混乱耶)。这个方式有许多好处,它可以在运行时决定具体要加载哪个链接库,要调用哪个函数…这才叫动态链接呢。
更多精彩
赞助商链接