一 静态库 1. 静态库的特点 1.1 目标程序的归档。 1.2 静态库的代码会被嵌入到程序当中。 1.3 程序执行时不需要静态库存在。 2. C语言静态库 2.1 创建静态库 创建Win32静态库项目,使用*.c文件文件建立项目。 2.2 添加静态库函数2.3 在程序中将静态库导入 2.3.1 项目中使用Setting里设置 2.3.2 使用关键字 pragma #pragma comment(lib, "libname.lib") 2.4 使用静态库提供的函数 在c语言中直接使用函数即可。 3. C++语言的静态库 3.1 创建静态库 创建Win32静态库项目,使用*.cpp文件文件建立项目。 3.2 添加静态库的函数 3.3 导入静态库 3.3.1 项目中使用Setting里设置 3.3.2 使用关键字 pragma #pragma comment(lib, "libname.lib") 3.4 定义库函数的原型 int CPP_Add(int nAdd1, int nAdd2) ; 3.5 使用静态库中提供的函数 3.6 注意 如果在CPP文件中使用C 语言的静态库,定义的静态库函数原型,需要增加extern "C" 二 动态库 1 动态库的基本使用方法 2.1 动态库的创建 2.2 加载动态库 2.3 获取并使用库函数、变量、或类 2.4 释放动态库 2 动态库的函数 2.1 创建 2.1.1 创建Dll的项目 使用Win32 DLL 项目,创建DLL,添加相应文件。 2.1.2 增加动态库函数 2.1.3 导出动态库函数 1)使用_declspec(dllexport)方式:在函数前增加关键字。 2)增加 extern"C"方式,如果采用extern"C" _declspec(dllexport)。以C语言方式导出 需使用extern"C“方式函数原型 3)使用DEF文件导出 增加扩展名为DEF的文件到项目中。在DEF文件中添加导出定义 LIBRATY DllFunc.dll //导出库 EXPORTS //导出表 Dll_Mul @1 //导出函数 2.2 使用 2.2.1 隐式链接 1)导入LIB 项目设置或者#pragma comment(lib, "../lib/dllfunc") 2)定义函数原型 声明了一个和导出函数一致函数定义 3)使用函数 直接使用即可 4)应用程序查找DLL的路径 查找当前应用程序的同目录 查找当前的工作目录 查找Windows System32目录 查找Windows Sysmet 目录 查找Windows 目录 查找环境变量PATH指定的路径 2.2.2 显示链接 1)加载动态库 LoadLibrary 2)定义函数原型的函数指针 3)获取函数地址 GetProcAddress 对于使用_declspec(dllexport)导出的函数,由于函数名称发生变化,所以无法使用函数名称获取对应的函数地址。 extern"C"或DEF方式,可以正常的获取函数地址,所以尽量使用隐式链接的方式。 4)使用函数 5)释放动态库 FreeLibrary