动态Dll加载若干问题
2011-10-08 16:00
183 查看
进程加载动态Dll步骤:
1. 当进程加载动态Dll时,进程给动态Dll分配了虚拟内存空间。
2.进程开始初始化Dll的全部变量和静态变量。初始化的顺序不定(太多因素影响了。。。)。
3.进程开始调用DllMain函数。函数其中一个变量ul_reason_for_call值为DLL_PROCESS_ATTACH。
Dll被同一个进程多次调用产生的问题
例如:
当A进程需要B和C两个模块。但A进程不知道B和C同时调用了一个Dll模块X。B和C都调用模块X的初始化资源函数。
这时突然间发现模块X的资源被初始化了两次,怎么办。
发生以上问题,主要在于没有考虑到模块被同一进程多次调用的情况,因此在写模块X的时候,需要有一个机制保证只初始化一次Dll的资源(可以用互斥)。
以上个人观点,如有错误,欢迎指正!
1. 当进程加载动态Dll时,进程给动态Dll分配了虚拟内存空间。
2.进程开始初始化Dll的全部变量和静态变量。初始化的顺序不定(太多因素影响了。。。)。
3.进程开始调用DllMain函数。函数其中一个变量ul_reason_for_call值为DLL_PROCESS_ATTACH。
Dll被同一个进程多次调用产生的问题
例如:
当A进程需要B和C两个模块。但A进程不知道B和C同时调用了一个Dll模块X。B和C都调用模块X的初始化资源函数。
这时突然间发现模块X的资源被初始化了两次,怎么办。
发生以上问题,主要在于没有考虑到模块被同一进程多次调用的情况,因此在写模块X的时候,需要有一个机制保证只初始化一次Dll的资源(可以用互斥)。
以上个人观点,如有错误,欢迎指正!
相关文章推荐
- 动态内存中加载DLL的问题
- 在mfc的dll里再动态加载jvm.dll引发的问题--不要在构造函数里做复杂的init流程
- dll动态链接库之用类写配置文件和调用判断方法接口的实现中遇到的若干问题
- 静态加载dll,动态加载dll及常见问题处理
- java.lang.UnsatisfiedLinkError: Can not load XXX library ... JNA不能加载DLL动态库问题
- PHP intl扩展安装/ext/php_intl.dll文件无法动态加载的问题
- 动态加载DLL实现不同DLL的相同导出函数调用问题
- 动态加载DLL的方法与注意的问题
- 解决VC中动态加载DLL时,必须将DLL文件放在EXE文件路经和系统目录下的问题
- 关于动态加载dll问题
- 动态加载dll的导出函数的问题
- 解决JNA动态加载jar中dll问题
- DLL运行时动态加加载的问题
- [C-C++]DLL之旅2 : 调用DLL(静态&动态加载)
- 探讨:关于动态编译WebService为dll然后调用WebService的问题,无法返回xml文本
- 若干linux下的动态库常见问题
- ajax动态加载js,导致js不执行失效问题
- 使用bootstrap-select 动态加载数据不显示的问题
- 静态加载dll和动态加载dll
- VC中实现dll动态库文件加载