如何制作windows下的dll(动态链接库)以及如何使用DLL文件

本文介绍了DLL(动态链接库)的基本概念,及其在Windows系统中的重要性。讲解了DLL的导入导出机制,包括MSVC编译器的_declspec属性关键字以及.def文件的使用。通过VS2017创建DLL的步骤,并着重阐述了DLL的隐式调用方法,包括配置工程属性和使用头文件、lib文件的细节。
摘要由CSDN通过智能技术生成
  1. DLL即动态链接库(Dynamic-Link Library)的缩写,相当于Linux下的共享对象。Windows系统中大量采用DLL机制,甚至内核的结构很大程度依赖于DLL机制。Windows下的DLL文件和EXE文件实际上是一个概念,都是PE格式的二进制文件。一般的动态库程序有lib文件和dll文件,lib文件是编译时期连接到应用程序中的,而dll文件才是运行时才会被调用的。

  2. 为了根号的理解DLL,首先要有导入和导出的概念。
    a. 在ELF(Linux下动态库的格式),共享库中所有的全局函数和变量在默认情况下都可以被其它模块使用,即ELF默认导出所有的全局符号。DLL不同,需要显示地“告诉”编译器需要导出某个符号,否则编译器默认所有的符号都不导出。
    b. 程序使用DLL的过程其实是引用DLL中导出函数和符号的过程,即导入过程。对于从其他DLL导入的符号,需要使用“_declspec(dllimport)”显示声明某个符号作为导入符号在ELF中,使用外部符号时,不需要额外声明该符号从其他共享对象导入的

  3. 指定符号的导入导出一般有如下两种方法:
    (1)MSVC编译器提供了一系列C/C++的扩展***来指定符号的导入导出,即_declspec属性关键字***。
    a. _declspec(dllexport)表示该符号是从本DLL导出的符号
    b. _declspec(dllimport)表示该符号是从别的DLL中导入的
    (2)使用".def"文件来声明导入和导出符号,详细参考http://www.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值