windows DLL编程基础

这篇博客介绍了Windows DLL的基础知识,包括DLL的作用、调用方式(静态调用和动态调用)、DLL的搜索顺序、构建步骤以及DLL的导入导出。详细讨论了DLL头文件的创建、.def文件的使用,以及如何处理C++的导出类和函数。
摘要由CSDN通过智能技术生成

DLL概述

DLL是Dynamic Link Library的缩写,即动态链接库。一般来讲DLL是一种磁盘文件,以.dll结尾的文件,但以.drv,.SYS,甚至.exe为扩展名的文件也可以是DLL。DLL由全局数据、服务函数和资源组成,在运行时被系统将DLL文件映像映射到调用进程的虚拟地址空间中成为调用进程的一部分。DLL模块通过导出函数,导出类、导出变量来为外界提供服务,不过由于导出变量会破坏封装,因此一般不建议导出变量。

DLL调用方式

DLL调用分为静态调用(又叫隐式调用)和动态调用(又叫显示调用)两种方式。

  • 静态调用时,需要将与动态链接库对应的.lib文件加入到工程中,在VS中将lib所在目录设置到项目->属性->链接器->常规->附加的库目录,将lib添加到到项目->属性->链接器->输入->附加的依赖项中。在QT Creator中在pro文件中添加 LIBS += -Llib库所在目录 -llib。或者在程序中添加#pragma comment(lib, “lib”)来引入动态链接库。
  • 动态调用时,由编程者调用API函数来加载和卸载DLL。在VS中使用如下方式:
   typedef int (*Foo)(int, int);  
   HINSTANCE hinstLib = LoadLibrary("Math.dll");
   Foo add = (Foo) GetProcAddress(hinstLib, "add");
   int nSum = add(1, 2);
   FreeLibrary(hinstLib);
在Qt中使用如下方式:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值