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