【DLL的虚拟化】
本帖最后由 书香 于 2024-3-3 04:29 编辑DLL大家已经不陌生了
思考一个问题:
两个程序是否可以同时调用一个DLL,可以的话共同调用会不会产生冲突
因此书香设计了一个巧妙的结构
DLL源码
.版本 2
.程序集 程序集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是虚拟化的
课件源码:
(点击返回课程目录:https://www.52hb.com/thread-58658-1-1.html)
思路巧妙! 不同程序的运行环境是隔离的。
页:
[1]