社区
进程/线程/DLL
帖子详情
假如一个DLL自己动态载入了第2个DLL 然后这个DLL提前被FreeLibrary,那么如何FreeLibrary第2个DLL呢?
uaiia
2005-04-05 09:25:41
如果第2个DLL自身FreeLibrary自己,会引起程序崩溃,不知是否有人有解决办法。。。
一般来说,我们只能在第一个DLL释放的时候处理第2个DLL的释放,不过还是想知道提问的例子是否有特殊的解决办法
...全文
153
10
打赏
收藏
假如一个DLL自己动态载入了第2个DLL 然后这个DLL提前被FreeLibrary,那么如何FreeLibrary第2个DLL呢?
如果第2个DLL自身FreeLibrary自己,会引起程序崩溃,不知是否有人有解决办法。。。 一般来说,我们只能在第一个DLL释放的时候处理第2个DLL的释放,不过还是想知道提问的例子是否有特殊的解决办法
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
uaiia
2005-04-07
打赏
举报
回复
感谢 tabris17(四不象)
你说的的确是个可能
BigFanOfCpp
2005-04-07
打赏
举报
回复
当然不能让第二个DLL自己搞掉自己了,
这些DLL是加载到同一个进程的地址空间的,所以只有在进程里卸载掉才是OK了.
xhzxlqt
2005-04-06
打赏
举报
回复
当然一般的就不说了,大家都会
二般的(还没试过,理论上应该可以):
将LoadLibrary得到的HMODULE传出去,交给主程序,主程序在结束前,检查一下是否已经FREE过了,否则FREELIBRARY(HMODULE)
Panr
2005-04-06
打赏
举报
回复
一般来说,我们只能在第一个DLL释放的时候处理第2个DLL的释放
这个比较合理的说
然后可能就是第一个dll 把后者的句柄传出来,在主进程里释放,应该也可以的
uaiia
2005-04-06
打赏
举报
回复
LoadLibrary得到的句柄其实就是该DLL的载入基址,无须传送的,在第2个DLL内部也可以取得
sjcode
2005-04-06
打赏
举报
回复
关注中...
tabris17
2005-04-06
打赏
举报
回复
主要是dll中调用FreeLibrary自己后,FreeLibrary函数会返回到dll的代码中。而此时这个地址的虚拟内存不存在,所以就引发了“非法操作”。只要你在调用FreeLibrary的时候,设置一下ret地址就可以了
sinall
2005-04-06
打赏
举报
回复
在exe中保存第二个dll的句柄。
signoft
2005-04-05
打赏
举报
回复
第一个Dll FreeLibrary的时候,不会自调用第二个Dll的计数器自动减1么?
以前没有考虑过这么仔细
关注这个问题
易语言
动态
载入
dll
源码
易语言
动态
载入
dll
中的菜单源码。适合用易语言进行模块化开发时
动态
载入
dll
中的菜单。
c++
动态
载入
dll
.rar
c++
动态
载入
dll
,里面有两个工程,
一个
生成
dll
,
一个
使用
dll
。是用vc++ 6.0开发的。
火山PC
动态
链接库例子(
动态
DLL
).rar
火山PC
动态
链接库例子(
动态
DLL
)
易语言从内存加载
DLL
源码
易语言从内存加载
DLL
源码。@易语言资源网站。
Delphi
动态
载入
DLL
文件
摘要:Delphi源码,文件操作,
动态
加载
DLL
Delphi
动态
载入
DLL
文件,
一个
动态
加载
DLL
的Delphi源代码,加载
DLL
后利用这个
DLL
获取到Windows用户名,请大家看软件截图吧。
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章