MFC DLL中的CWinApp在LoadLibrary时不调用InitInstance

lunat 2011-05-31 11:35:12
在MFC DLL(使用共享MFC)中:
class CAdapterApp : CWinApp
{
//...
}

CAdapterApp theApp

BOOL CAdapterApp::InitInstance()
{
CWinApp::InitInstance()

MessageBox(NULL, _T("App InitInstance"), NULL, 0);

return TRUE;
}
//...

问题:
1.在程序中使用LoadLibrary加载该DLL时,InitInstance不执行;
2.但是通过GetModuleHandle却可以得到该DLL的加载地址;
3.如果通过GetProcAddress获取其导出函数并调用,则会先执行InitInstance
4.在DLL内部调用FreeLibraryAndExitThread并不能卸载掉自身

以上步骤为依次执行,往各位高手解惑……
...全文
438 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
西客小贝壳 2011-09-18
  • 打赏
  • 举报
回复
帮忙顶爱,我也遇到同样的问题了
Tian_Dao_Akane 2011-06-13
  • 打赏
  • 举报
回复
最近学习Dll注入的方法,写了个基于MFC的简单dll后,用注入工具注入记事本程序中,发现了和楼主一样的问题:dll模块中的InitInstance都没有被调用,实在无语。借楼主贴子问一下大家有何方法解决?连InitInstance都不能被调用,我如何指望我的dll能得到宿主程序,也就是记事本的事件和消息,并作出响应呢?求高人简单指点一下,谢谢!
lunat 2011-05-31
  • 打赏
  • 举报
回复
已经确定原因:该MFC DLL中使用了CLR之后就不能在LoadLibrary时自动调用InitInstance了……
saintwang 2011-05-31
  • 打赏
  • 举报
回复
路过,学习
grwstc 2011-05-31
  • 打赏
  • 举报
回复
CLR是什么?学习~~
oyljerry 2011-05-31
  • 打赏
  • 举报
回复
MFC DLL就不要使用CLR了.可能被它影响了.

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧