
动态链接库的DLL文件是像EXE文件一样的可执行文件,但是DLL也称为库,因为它像库一样封装了各种类,函数之类的东西,它主要用于调用. 主要有两种调用方法: 隐式(通过lib文件和头文件)和显式(仅通过DL文件).
二,为什么要使用DLL?
在Microsoft方面,很多代码都是开源的,例如MFC. 这些代码直接暴露在程序员的眼皮底下,易于调用. 当然,它们也很容易随着程序员代码而变异. 业内还称其为“白色”,“盒式复用”具有一定的优点怎么写dll文件,也有缺点. 在此基础上,最好讨论一下DLL. DLL将一系列代码转换为二进制文件,程序直接使用该二进制文件,称为“黑盒复用”.
动态链接库DLL的最大优点是节省内存. 当程序未运行DLL中的功能时,DLL中的功能将不运行. 仅当到达DLL时,才可以通过DLL的接口功能来访问DLL. 与直接将功能代码写入主题函数或静态链接库相比,运行效率大大提高. 其次,DLL文件用于编程怎么写dll文件,其更新更加方便,并且无需连接到程序.
三,如何使用DLL?
(1)首先创建一个空的DLL文件,创建方法为: New-Project-win32控制台程序-然后取一个名称-OK-下一步-选择DLL-检查空白项目. 成功建立了一个新项目.

Visual Studio中具有以下开发环境
常规dll应该配备的三种文件类型:
(1)DLL文件: 必需
(2)lib文件: 可选. 包含用于隐式加载的dll函数条目信息.
(3)头文件. h: 不需要. 在头文件中写一个语句(这样它就被隐式加载),方便人们查看其中的内容,并且方便其他人使用而无需编写很多语句.
文件放置

显示和加载: 只需将dll与可执行文件放在同一目录中
隐式加载: 将dll和lib放在项目文件夹中. 或在“右键单击项目属性-linker-general-additional库目录”中添加dll和lib所在的文件夹
外部“ C” _declspec(dllimport)
(1)_declspec是用于指示函数或变量是导出还是导入的关键字. 括号中的dllexport表示将导出,而dllimport表示将导入.
(2)extern“ C”用于指定编译器编译后的函数别名,以便在使用时可以正确找到它. 也就是说,对于变量extern int a;直接将其写为extern“ C” int a;只是,功能相同.
(3)(.def)文件语法: 条目名[=内部名称] [@ordinal [NONAME]] [[PRIVATE] | [DATA]]在方括号中是可选的.

(4)与他人共享的头文件通常具有此部分(宏变量名称是任意的):

此效果: 编写dll的人首先定义了宏AAA,编译时导出了函数方法,而使用dll的人未定义AAA,因此导入了函数方法,方便了编写头文件并直接共享它,而无需进行更多更改.
(5)在VS中,如果使用非空项目,则VS将如上所述自动生成“ AAA”并将其添加到预编译中. 此设置保存在文件.vcxproj类型的文件中,该文件位于文件的PreprocessorDefinitions标记中,并且有四个,分别对应于debuf,release和x86,x64的组合. 如果要修改它,可以直接转到文件并修改相应宏的名称.
(6)显示正在加载typedef int(* SUBPROC)(int a,int b);意思是定义类型SUBPROC,它对应于dll的函数原型,但仍需要转换.
(7)使用它时,声明仍需要在开头添加extern“ C”. 如果在声明外部函数时未添加它,将导致外部符号的连接(实际目的是使两项的函数别名相对应. 如果其中一项由编译器处理,则别名可能不一致)

(8)如何在dll中获取类的实例?
假设: 在头文件中写入A类声音,然后将其写入Cpp中.
编写一个函数A * getA(返回新的A();),然后如上所述导出和导入该函数以获取它.
(9)什么是DllMain函数?
dll的函数条目,如果您不编写它,系统会自动为您编写它,但是可能会出现错误.
APIENTRY: API条目.
HMODULE: 实际上是typedef HINSTANCE HMODULE,现在32位和64位系统与HINSTANCE没什么不同
DWORD: 调用dll时系统传递的变量类型. 查看上述4种情况的英文,目的是允许dll在进程(线程)加载(卸载)dll时执行一些其他的操作(初始化,回收指针等).
:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-205963-1.html
因为这包装早改了)
也可以先把我们的民用渔船去相关海域打鱼作业
穿白毛衣太棒