VC动态链接库基础

本文详细介绍了VC++动态链接库的基础知识,包括动态库的作用、静态库与动态库的区别、如何查看DLL导出信息、动态库的加载方式(隐式和显式)以及如何处理名字改编问题。此外,还讲解了动态库导出函数的方法,以及在不同编译器间调用可能遇到的名称改编问题和解决策略。
摘要由CSDN通过智能技术生成

概述

动态链接库通常不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能够被可执行程序或者其他DLL调用来完成某项工作的函数。在实际编程时,可以把完成某种功能的函数放在一个动态链接库中,然后提供给其他函数调用。

Windows API中所有的函数都包含在DLL中,其中有3个最重要的DLL:

Kernel32.dll:包含管理内存,进程,线程的函数;

User32.dll:包含执行用户界面任务(如窗口的创建以及消息的发送)的函数;

GDI32.dll:包含用户画图和显示文本的函数。

 

静态库和动态库:

静态库:

函数和数据被编译进一个二进制文件(扩展名为”.LIB”),在编译链接可执行文件时,静态库中函数和数据被导入最终的可执行文件中。在发布时,只需要发布可执行文件即可。

动态库:

使用动态库包括两个文件,引入库(.lib)和DLL(.dll)。引入库文件包含该DLL导出的函数和变量的符号名,而DLL文件包含实际的函数和数据。在编译链接可执行文件时,只要链接该DLL的引入库文件,DLL中的函数和数据在执行时才加载。在发布时还要发布动态链接库。

从DLL中导出函数:在每一个被导出的函数前添加标识符:_declspec(dllexport)(有头文件时在函数申明时添加,无头文件时在函数定义时添加)。

 

动态库导出信息查看方式

VC提供的两个辅助命令:

1.      Dumpbin命令,格式:dumpbin–exports name.dll

Tips1:Dumpbin.exe位于VisualStudio安装目录下的VC98\bin目录下。该目录下还有一个批处理文件:VCVARS32.bat,该文件用来建立VC++使用的环境信息。如果在其他目录下无法执行Dumpbin命令,可能是Visual Studio安装环境信息被破坏了,可以运行VCVARS32.bat批处理文件就可以执行了。但是该文件所设置的环境信息只对当前命令行窗口生效。如果关闭该窗口,需重新运行运行批处理文件。

Tips2:在命令行界面下选中数据,按下回车键即可实现数据的复制功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值