为了账号安全,请及时绑定邮箱和手机立即绑定

如何添加DllMain函数?

如何添加DllMain函数?

紫衣仙女 2019-02-06 11:06:48
如何添加DllMain函数?
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

1、The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的。
2、系统是在什么时候调用DllMain函数的呢?静态链接时,或动态链接时调用LoadLibrary和FreeLibrary都会调用DllMain函数。DllMain的第二个参数fdwReason指明了系统调用Dll的原因,它可能是::DLL_PROCESS_ATTACH、DLL_PROCESS_DETACHDLL_THREAD_ATTAC、
DLL_THREAD_DETACH。
以下从这四种情况来分析系统何时调用了DllMain。
3、DllMain函数是DLL模块的默认入口点。当Windows加载DLL模块时调用这一函数。系统首先调用全局对象的构造函数,然后调用全局函数DLLMain。DLLMain函数不仅在将DLL链接加载到进程时被调用,在DLL模块与进程分离时(以及其它时候)也被调用。

查看完整回答
反对 回复 2019-03-22
?
函数式编程

TA贡献1807条经验 获得超9个赞

DllMain函数是Dll的入口点函数,DllMain函数的原型是BOOL WINAPI DllMain(HISNTANCE hInst, DWORD dwReason, LPVOID);,可在cpp的任何地方来定义这个函数。一般地,对于C\C++程序来说,这个DllMain并不是Dll的真正的入口点,真正的入口点是C\C++运行时库的入口点,C\C++运行时库在进行一些初始化后,才会调用你提供的DllMain函数。如果想让自己的DllMain成为真正的入口点函数,可以在链接选项里,把“入口点”改成DllMain。

查看完整回答
反对 回复 2019-03-22
?
噜噜哒

TA贡献1784条经验 获得超7个赞

如果你知道怎么新建工程请往下看。如果不知道就当我没来过

新建一个WIN32的DLL工程
新建一个CPP源文件

添加如下代码

BOOL WINAPI DllMain(
HANDLE hinstDLL,
DWORD dwReason,
LPVOID lpvReserved)
{
return TRUE;
}

就完成了DLLMAIN的编写了




查看完整回答
反对 回复 2019-03-22
  • 3 回答
  • 0 关注
  • 817 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信