没有DllMain的Dll--哪来的dllMain?

一般在C或C++中(VC当然是C++的一种),DLL的模块入口点有个默认函数,是_DllMainCRTStartup(),它的原形与 DllMain()一样,链接器在链接的时候就是以它作为模块的入口函数,那样它就可以进行一些模块全局变量等的初始化操作,当然用户也可对模块入口地址 进行自行设定,不过不建议这么做!

当链接器在链接时,它会自动查找当前DLL模块工程中的各个.obj文件,如果找到有DllMain()函数,这时就会 在_DllMainCRTStartup()函数中调用用户的入口点函数,也就是DllMain()函数;如果找不到,就会调用到CRT的默认DllMain(),这个DllMain()函数中只有很少的一些代码,那就是在传递DLL_PROCESS_ATTACH通知中调用 DisableThreadLibraryCalls()函数,以告诉系统以后有线程的创建或撤消时不必调用此DLL的入口点通知。  

所以说在DLL模块中没有DllMain()用户自定义的入口点模块是可以的。

转载于:https://www.cnblogs.com/taoxu0903/archive/2009/07/05/1517310.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值