孙鑫 动态链接库DLL

说明:应工程需要,学习动态链接库

1、Kernel32.dll,包含用于管理内存、进程和线程的各个函数

2、User32.dll,包含用于执行用户界面任务的各个窗口函数(比如窗口的创建和消息的传递)

3、GDI32.dll,包含用于画图和显示文本的各个函数

4、使用动态链接库时候,需要的文件,引入库和DLL

引入库包含被DLL导出的函数和变量的符号名,后缀的.lib

DLL包含实际的函数和数据。

在编译链接可执行文件时,只需要链接引入库,DLL中的代码和函数数据并不会赋值到可执行文件中,在运行的时候再去加载DLL,访问DLL中的导出函数

5、代码页面和数据页面。DLL使用的是虚拟内存中,多个进程可以共享统一代码

6、动态链接库加载两种方式:隐式链接,显示加载

7、_declspec(dllexport)导出函数关键符  

此时会产生.lib文件,里面是导出函数名称

extern 外部函数声明,  与 _declspec(dllimport)结果相同,后者为常用

链接时候使用lib文件(将该库设置的时候LINK设置即可)

运行时加载DLL文件

头文件,包含导出函数原型的信息,给调用动态链接库的程序所使用

条件编译指令 

#ifdef DLL_API

#else

#define DLL_API _declspec(dllimport)//此处是宏定义

#endif

..\**\当前目录的上一层

在编译程序的时候,头文件不参与编译,源文件单独编译

在动态链接库中只有被导出的函数和类才可以被使用

8、dumpbin??

9、导出类,在class和类名之间加入_declspec(dllexport)

类的成员函数和变量访问权限与对类的访问权限相同,

或者将某个成员函数前面加入该句话,则只导出此成员函数

10、GetForegroundWindow(返回当前正在工作的窗口句柄),返回值HWND

11、memset(参数1,参数2,参数3)将参数1的参数3个用参数2代换并返回参数1

12、导出函数:C++编写的动态链接库直接给C语言客户端调用时会发生问题

      extern "C(此处需要大写)" _declspec(dllexport)可以实现语言的转换

      表明名字没有发生改变

     _stdcall 函数名称后面是参数所占字节数

13、模块定义文件,后缀名def

LIBRARY 动态链接库名称

EXPORTS 导出的函数名称

加载动态链接库 LoadLibrary(可执行的名字)    返回模块句柄

GetProcAddress()

int (*ADDPROC)(int a,int b)函数指针

14、DLLMain动态链接库可选入口点函数








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值