一Windows库
1引入库的原因:
a.项目的复杂程度大
b.提高代码的利益利用率
2库的分类
2.1静态库: *.lib,不能被加载的程序,可以理解为目标程序的归档。
2.2动态库:*.dll,可以被应用程序加载的程序。
二动态库
1动态库优点
1.1可以提供模块化的方式,方便协调开发(对于大项目,每个人写的东西编译为动态库,直接链接即可)
1.2对源代码保护
1.3减小可执行文件大小
1.4提高代码重用率
2动态库的基本使用方法
2.1动态库的创建
2.2加载动态库
2.3获取并使用库函数、变量或类
2.4释放动态库
3动态库的函数
3.1动态库的创建
3.1.1创建DLL项目
创建Win32Dll项目,创建DLL项目,添加*.cpp文件。

3.1.2增加动态库函数
3.1.3导出动态库函数(告诉使用者动态库中可提供的函数,代码示例如上)
(1)使用__declspec(dllexport)方式,在函数前增加关键字。举例如下:
__declspec(dllexport) intDll_Add(intnLeft,intnRight){
return(nLeft + nRight);
}//C++方式导出
(2)增加extern “C”方式,举例如下
extern"C" __declspec(dllexport)// 以C语言方式导出函数
(3)
使用
def
方式导出
(
在项目中添加
*.def
文件
)
//*.def文件中信息
LIBRARY dllfunc.dll //导出库
EXPORTS//导出表
Dll_Mul@1//导出函数
Dll_Div@2
(VC6中def导出方式与 extern “C”导出方式导出.lib文件内容基本相同,可用于显式链接)
动态库导出函数代码示例如下:
#include
#include
using namespace std;
BOOL WINAPIDllMain(//返回值代表是否记载成功
HINSTANCE hinstDll,//DLL句柄
DWORD fdwReason,//DLL被调用的原因
LPVOID lpvReserved)//保留值
{
cout << "DLL = " << hinstDll << endl;
cout << "fdwReason = " << fdwReason << endl;
return TRUE;
}
本文详细介绍了C/C++中动态库(DLL)的创建、导出和使用方法,包括动态库的优点、创建过程、隐式链接与显式链接的使用,并通过实例展示了函数、变量和类的导出与导入。动态库的使用可以实现模块化开发,提高代码重用率,同时有利于源代码保护和减小可执行文件大小。
最低0.47元/天 解锁文章
3894

被折叠的 条评论
为什么被折叠?



