那么不结束进程的情况下不能让进程直接释放dll?? 还有,线程在这里是否管用 |
本帖最后由 veal 于 2009-8-5 15:11 编辑 用WIN32API函数FreeLibrary可以结束本进程对一个dll的调用,如果在这之后没有任何其他进程调用这个dll的话,系统可能会释放这个dll,然后理论上就能删除移动重命名。 至于“可能”,是因为注册表有个键设置“当没有任何进程调用一个dll时就会释放这个dll”,默认的话未必有这个键存在。 键值位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDLL 如果没有这个键的话,新建一个,把键值default的值改成1 即使以上条件都具备,主动权在系统,未必会释放这个dll =v= FreeLibrary函数 http://msdn.microsoft.com/en-us/library/ms683152(VS.85).aspx GetModuleHandle函数(获得dll句柄用) http://msdn.microsoft.com/en-us/library/ms683199(VS.85).aspx 注册表AlwaysUnloadDLL参考 http://www.gilsmethod.com/how-to ... emory-in-windows-xp |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-1-11 21:06
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.