精品文档---下载后可任意编辑一,动态链接库的基本概念1.DLL(Dynamic Linker Library)的概念可以把 DLL 看做是一个仓库,它提供了一些可以直接拿来用的变量,函数或者类(但是不建议从 DLL 中猎取变量),在历史的进展中,仓库经历了从“无库 - 静态链接库 - 动态链接库”的时代。静态链接库(.lib)和动态链接库(.dll)都是共享代码的方式。假如采纳了静态链接库,则无论你愿不同意 lib中的代码指令都被直接包含进了最终生成的.exe 程序中。但若是使用了动态链接库,该 DLL 则不会被包含进.exe 程序中,当.exe 程序执行的时候,再“动态”的来引用或者卸载 DLL。DLL 文件可以被其他的语言所调用,例如 C#或者 Java 等。譬如 Window 下的存在大量的 DLL 文件,当我们用 Java 编写 Swing 界面或者其他语言如 C#等都是可以进行调用的。我们在 Window 系统下面的 system32 文件夹中会看到 kernel.dll、user32.dll 和gdi32.dll。Window 系统下的大多数 API 都是包含在这些 DLL 中。kernel.dll 中的函数主要处理内存管理和进程的调度。user32.dll 中的函数主要控制用户界面。gdi32.dll 中的函数主要负责图形方面的操作。从上图中可以看出,静态链接库和动态链接库都是在程序的“链接”阶段进行调用的,但是静态库和动态库的链接方式是不一样的。静态库的链接是把.lib 的代码指令全部链接到最终生成的 EXE 程序中。动态链接库的链接是只链接.dll 文件的地址引用,因此生成的 EXE 程序中不包含.dll 的代码指令,所以.dll 生成的可执行程序要比.lib 生成的小很多,根据实验,一个仅包含 printf 的函数的生成程序,在静态链接库中需要 800k,而动态链接库只需要 8k 左右,可以见其差 100 倍。二,静态库的创建和调用① 创建一个 Win32 控制台应用程序精品文档---下载后可任意编辑② 点击下一步③ 选择静态库应用程序类型,去掉预编译和安全检查后,点完成。精品文档---下载后可任意编辑④ 项目创建完成后,添加 MathUtils 类⑤ 编写 MathUtils 类的.h 和.cpp 文件,为打包成静态库做准备精品文档---下载后可任意编辑⑥① 根据上面的方式再创建一个项目,这里起名为 TestLibDemo,注意这里的程序类型是控制台应用程序。然后编写 main.cpp 文件。② 静态连接库的调用需要引入.h 文件和.lib 文件,因此我们把上面创建的 MathUtils 项目里的MathUtils.h 和 M...