当前位置:C++技术网 > 资讯 > 动态链接库基础详解

动态链接库基础详解

更新时间:2015-11-02 23:46:08浏览次数:1+次

windows程序是一个可执行的文件,它通常创建一个或多个窗口,并使用消息循环来接收用户的输入。动态链接库一般不能执行,而且他们一般也不接受消息。它们是包含许多函数的独立文件,这些函数可以被应用程序或其他的DLL调用以完成某些特定的工作。一个动态链接库只有在另一个模块调用其所包含的函数时才被启动。
“动态链接库”这个术语是指Windows的链接过程,在这个过程中他把模块中的函数调用与在库模块(动态链接库的另一个称呼)中的实际函数链接在一起。“静态链接”一般是在程序开发过程中发生的,用于把一些文件连接在一起创建一个windows可执行文件。这些文件包括各种各样的对象模块(.OBJ),运行时库文件(.LIB),通常还有以编译的资源文件(.RES)。与其相反,动态链接则发生在程序运行时。
在VC6.0编译器中有一个对象/库模块:

对象库是一个扩展名为.LIB的文件,这个文件中的代码在运行链接器进行静态链接是被添加到程序的.exe文件中。
倒入库是一种特殊形式的对象库文件。如同对象库一样,倒入库的扩展名为.LIB,链接器用它来解析源代码中的函数调用。然而,倒入库不包含任何的代码。相反,他们只是给链接器提供信息,以建立.EXE文件中调用动态链接。下面请你好好理解这句话:我们知道三大链接库:kernel32.lib,User32.lib及Gdi32.Lib文件是windows函数的导入库!假设我们调用Rectangle函数时,Gdi32.Lib会告诉编译器这个函数是在Gdi32.dll动态链接库中,然后程序就会进行动态链接。
DLL中供应用程序所用的函数必须先导出(利用EXPORT)。这仅是用以确保函数名称被添加到.Lib中的关键字而已(使得连接器在连接使用这些函数的应用程序时可以正确的解析函数名),并用以确保在相对应的.DLL文件中可见。如果编译器是由C++模式编译,则EXPORT标志服会存储关键字_declspect(dllexport)。
这篇文章算是对《动态链接库小程序练练手》一文的代码原理的解释,如果你看得懂的话。要是你没有动态链接库的基础,请看完这篇文章再看看《动态链接库小程序练练手》一文,能让你比较好的就掌握动态链接库知识。