延迟载入DLL的局限 以及 应用
来源:互联网 发布:进度计划软件project 编辑:程序博客网 时间:2024/05/29 08:14
1。一个导出了字段(数据,全局变量)的DLL是无法延迟载入的
2。kernel32.dll是无法延迟载入的.因为载入该模块才能调用LoadLibrary和GetProcAddress
3。不应该在DllMain入口点函数中调用一个延迟载入的函数,因为这样可能会导致程序崩溃.
注意第二条,看,看,看到了没 "因为载入该模块才能调用LoadLibrary"
也就是说, 如果静态连接的函数选用了延迟导入,那么加载函数也会用到LoadLibrary,再想想SetDllDirectory, 想到了什么呢
没错,我们甚至可以调用SetDllDirectory函数来指定隐式联结的DLL模块的路径,只要在调用该DLL的函数之前先调用SetDllDirectory
//
//
延迟DLL的设置位置: Configuration Properties/Linker/Input ------ Delay Loaded DLLs
/DELAYLOAD:"MyDealyLoadedDLL.dll"
可以设置多个延迟DLL
如果想在程序中卸载延迟载入的DLL
需要设置另一开关: Configuration Properties/Linker/Advanced ----------------- Delay Loaded DLL
/DELAY:UNLOAD
在代码中调用
ExternC
BOOL WINAPI
__FUnloadDelayLoadedDLL2(LPCSTR szDll);
来卸载一个延迟加载的DLL
不要直接用FreeLibrary, 不然已经加载的函数地址不会重置,下次再调到延迟DLL的函数会导致程序崩溃.
调用__FUnloadDelayLoadedDLL2时候传入的DLL名字不应该包含路径,并且名字中字母的大小写必须和传入/DelayLoad链接器开关的DLL名字大小写完全相同.
- 延迟载入DLL的局限 以及 应用
- DLL延迟载入机制
- DLL高级技术之延迟载入
- 产生随机数的局限以及处理方法
- 图片的预载入(Preload)与延迟载入(Lazyload)
- 延迟加载库的应用:Dll嵌入可执行文件中
- 实现Dll的延迟加载
- 延迟加载DLL 的意义
- kxte9应用局限
- 分享一个超棒的动画延迟载入轮播图插件
- RCP_TreeViewer的ContentProvider详解,以及Lazy载入
- TreeViewer的ContentProvider详解,以及Lazy载入
- 延迟加载Dll的实现原理
- 延迟加载Dll的实现原理
- 基于Ogre的DeferredShading(延迟渲染)的实现以及应用
- 基于Ogre的DeferredShading(延迟渲染)的实现以及应用
- JTidy的局限
- 思維的局限
- tcpreplay重放速度的控制
- Android程序如何获得屏幕的方向和大小
- C#调用java类、jar包方法。
- 早期版本的sched.h
- ipad/iphone开发培训 7.27 第二天
- 延迟载入DLL的局限 以及 应用
- PE58
- 端正态度
- SQLServer性能优化之活用临时表
- 单例模式的几种写法(包含双检锁写法)
- 微软高级流格式ASF简介
- PreparedStatement 使用方法JDBC存储过程。
- Doxygen心得
- Android 终端命令安装 apk 应用程序