dll之我见

本文探讨了DLL作为剥离主程序中非必要模块的一种解决方案,解释了为何不是所有数据都被剥离,以及静态与动态调用的区别。静态调用类似于静态链接库,在编译时将DLL内容合并到EXE文件中;而动态调用则实现了运行时加载。
摘要由CSDN通过智能技术生成

所谓的dll,无非是将不必用到的模块源码、资源、数据(静态的)等剥离出主程序的一种解决方案。由于工程越来越大,想把所有的东东都编译进exe,会使exe膨胀得厉害,占用内存太大,所以采用这种解决方案。

刚才讲了,为什么不把dll所有用到的数据都剥离出来呢?答案是没必要。dll总是附属于exe(或者说宿主进程)才能运行,堆栈数据完全可以采用与exe同等的空间,这样系统管理起来方便,不用再分dll堆栈和exe堆栈。

每一个进程仅仅对应dll一个静态变量实例,所有多线程访问时必须注意同步问题。

至于静态与动态调用的区别:静态调用实际上是换一种方式的静态链接库(lib)。与lib一样,exe运行之前,所有东西都编译进exe了。所以,没有编译之前如果把dll去掉了,编译肯定会报错。个人觉得动态调用(或者称显示调用)才具备动态连接库真正的工程意义:运行时加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值