DLL动态链接库 总结 看了孙鑫老师的书和笔记 自己做了下 小做总结

本文总结了DLL动态链接库的基本概念,包括其相对于静态库的优势,以及两种加载方式:隐式调用和动态加载。对于隐式调用,详细介绍了如何使用_declspec关键字,设置链接库,并在代码中声明函数。而对于动态加载,提到了LoadLibrary和GetProcAddress的使用,以及创建.def文件的方法。
DLL动态链接库 总结
看了孙鑫老师的书和笔记 自己做了下 小做总结

DLL  动态库,静态库。动态库节约磁盘空间,静态库体积大。(不是很清楚)
两种加载方式:隐式调用、动态加载。


1.隐式调用  会有两天文件重要:lib、dll
        _declspec(dllexport) 放在出口函数前 在lib中记录  lib和dll都放在当前文件目录下
        在工程/project 设置/setting 常规/general那一条 选连接/link 对象/库模块 XXX.lib  确定就OK了

在文件中对从dll来的函数定义 extern int add(int a,int b);
                extern int subtract(int a,int b);
 这种写法一般不用,可以写成//_declspec(dllimport) int add(int a,int b);
//_declspec(dllimport) int subtract(int a,int b);

如果要写个dll的同文件 用宏取代 _declspec(dllimport)
Dll1.h
#ifdef DLL1_API
#else
#define DLL1_API extern "C" _declspec(dllimport)  //extern "C" C大写 防止名字变
#endifDLL1_API int _stdcall add(int a,int b);
DLL1_API int _stdcall subtract(int a,int b);
Dll1.cpp的代码:
#define DLL1_API extern "C" _declspec(dllexport)

.cpp 别忘了头文件 #include "Dll1.h" #include <Windows.h>
2.动态加载
还有一个写.txt 改成后缀.def
LoadLibrary();

HINSTANCE hInst;
    hInst=LoadLibrary("DLL2.dll");
    typedef int (*ADDPROC) (int a,int b);
    ADDPROC add=(ADDPROC)GetProcAddress(hInst,"add");
不用extern那些 ,不用link 就OK了
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值