亮亮视界 2009年03月01日
好像有点难:DLL _unloaded 问题

以下是对问题的描述,希望各位能给出可能导致该问题的原因。
比如1我的程序写的可能有问题 2 驱动问题
希望大家能给的更详细一点。在此先谢了。
********************************************************************************
主要涉及到两个DLL,这两个DLL都是Intel的,安装某驱动时安装上的,该驱动Intel正在开发过程中,现在使用的只是一个中间的版本。暂且以A.dll 和B.dll代替。
我需要用到A.dll中函数,而A.dll中的函数需要用到B.dll
现象:
1LoadLibray(_T("A"));使用GetModuleHandle(_T("B"));可知在加载A的时候,B也被加载到内存。
2GetProcAddress获得A中的函数
3调用A中的函数
4使用GetModuleHandle(_T("B"));可得B.dll仍然存在于内存中。然后调用FreeLibrary(_T("A"));
程序崩溃出现下面提示:(日文操作系统)
問題の署名:
問題イベント名: APPCRASH
アプリケーション名: XXX.exe
アプリケーションのバージョン: 1.0.0.301
アプリケーションのタイムスタンプ: 49a7c175
障害モジュールの名前: B.dll_unloaded (A内部调用的dll)
障害モジュールのバージョン: 0.0.0.0
障害モジュールのタイムスタンプ: 496c6b1a
例外コード: c0000005
.......
.......


现象2:如果LoadLibray(_T("A"));调用其中的函数,然后LoadLibray(_T("B"));然后再释放A,这时候程序正常执行,A被成功释放,但B会仍存在于内存之中,此时释放B,程序仍然会崩溃。
现象3:如果LoadLibray(_T("A"));然后FreeLibrary(_T("A"));不调用A.dll中的函数,程序正常。
***********************************************************************************

...全文
502 点赞 收藏 12
写回复
12 条回复

还没有回复,快来抢沙发~

发动态
发帖子
VC/MFC
创建于2007-09-28

7872

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告