-
海绵宝宝撒
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模块与进程分离时(以及其它时候)也被调用。
-
函数式编程
DllMain函数是Dll的入口点函数,DllMain函数的原型是BOOL WINAPI DllMain(HISNTANCE hInst, DWORD dwReason, LPVOID);,可在cpp的任何地方来定义这个函数。一般地,对于C\C++程序来说,这个DllMain并不是Dll的真正的入口点,真正的入口点是C\C++运行时库的入口点,C\C++运行时库在进行一些初始化后,才会调用你提供的DllMain函数。如果想让自己的DllMain成为真正的入口点函数,可以在链接选项里,把“入口点”改成DllMain。
-
噜噜哒
如果你知道怎么新建工程请往下看。如果不知道就当我没来过新建一个WIN32的DLL工程新建一个CPP源文件添加如下代码BOOL WINAPI DllMain(HANDLE hinstDLL,DWORD dwReason,LPVOID lpvReserved){return TRUE;}就完成了DLLMAIN的编写了