本帖最后由 易团雪 于 2024-3-5 19:06 编辑
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件
1.新建DLL动态库程序
文件-新建项目-输入项目名称-保存文字等:
以下为项目结构的三个必须文件xh/xc/rc
可以看到项目属性类型为DLL动态库程序
xc源码文件里默认的入口函数(里面的调试输出是可以屏蔽的)
[C++] 纯文本查看 复制代码 函数 整型 入口函数_动态库() //DLL程序入口函数, 程序启动优先进入此函数
{
调试输出("动态库程序", 模块句柄)
如果 DLL_进程附加 == 被调用原因
{
调试输出("DLL_进程附加")
}
否则 DLL_线程附加 == 被调用原因
{
调试输出("DLL_线程附加")
}
否则 DLL_线程分离 == 被调用原因
{
调试输出("DLL_线程分离")
}
否则 DLL_进程分离 == 被调用原因
{
调试输出("DLL_进程分离")
}
返回 真 //成功返回真
} 2.编写导出函数
格式为:函数 编译方式C 导出 返回类型 调用约定 函数名称(参数列表)
调用约定--如不填写默认为:cdecl
下面是一个简单的_add(两个数相加)导出函数:
[C++] 纯文本查看 复制代码 函数 编译方式C 导出 整型 WINAPI _add(整型 a, 整型 b)
{
返回 a + b
} WINAPI-为stdcall约定,易语言默认的也是这个约定
这个格式是不是发现和之前学的-零基础入门篇-011-函数的定义与调用-差不多啊
3.参数返回结构
[C++] 纯文本查看 复制代码 函数 编译方式C 导出 空类型 WINAPI _add3(整型 a, 返回结构类型 &y)
{
y = {"我是炫语言传出文本", a, 3.2f}
}
结构体 返回结构类型
{
字符型 *我是文本
整型 我是整型
浮点型 我是浮点
} 注意:目前还不支持文本型相关类型,所以这里用字符型代替[C++] 纯文本查看 复制代码 函数 编译方式C 导出 字符型 *_add1()
{
返回 "返回的文本"
}
函数 编译方式C 导出 返回结构类型 WINAPI _add2(字符型 *文本, 整型 a)
{
返回结构类型 y = {文本, a, 2.1f}
返回 y
} 最后使用DLL查看工具, 查看导出的函数:
注意:当项目类型为DLL时,项目属性里默认勾选自动生成DEF文件,此方式一般为DLL导出WINAPI调用约定的函数
如不勾选自动生成def文件,导出函数名会跟随@符号
|