书香雅阁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 263|回复: 0

【DLL的虚拟化】

[复制链接]

384

主题

407

帖子

158万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1581367
发表于 2024-3-2 23:05:03|字数:889 | 显示全部楼层 |阅读模式
LV10 站长

DLL大家已经不陌生了

思考一个问题:
两个程序是否可以同时调用一个DLL,可以的话共同调用会不会产生冲突

因此书香设计了一个巧妙的结构
DLL源码
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 请在本子程序中放置动态链接库初始化代码
a = 1     ' a是全局变量
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 返回值被忽略。
子程序名返回值类型公开备 注
_临时子程序  
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
子程序名返回值类型公开备 注
test
信息框 (a, 0, , )
a = 5



那我们现在使用2个程序去调用这个dll,命名为1.exe和2.exe
当1.exe调用的时候,首先会弹出信息框,提示内容是1,然后对令a=5
接下来使用2.exe调用的时候,因为这个时候a=5,如果信息框提示的值是5,就说明数据可以互相冲突,提示为1,就说明数据不相通

结论:提示为1,多个exe调用同一个dll,数据之间彼此是分开的,也就是dll是虚拟化的

课件源码:
dll: 测试dll.e (2.26 KB, 下载次数: 125)
调用程序: 调用dll的exe.e (2.04 KB, 下载次数: 125)


(点击返回课程目录https://shuxiangyage.net/forum.php?mod=viewthread&tid=1134
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|书香雅阁论坛 ( 湘ICP备17011672号-3 )

GMT+8, 2024-5-3 06:08 , Processed in 0.113657 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表