未调用 Dllmain 函数

Dllmain function is not being called

我在这里进行了搜索,但是 none 这些问题对我有帮助所以是的,我会解释一下: 我的 Dllmain 函数在附加到 visual studio 项目设置中的进程 (rundll32.exe) 时未被调用 我将其更改为附加到 rundll32.exe 它应该在附加时显示一个消息框但是它只是不这样做。 我的代码:

// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                      LPVOID lpReserved
                    )
{
   switch (ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:
       MessageBox(NULL,L"ThumbsUp",L"Attached",MB_ICONINFORMATION);
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
   case DLL_PROCESS_DETACH:
       break;
   }
   return TRUE;
}

谢谢

如果您使用 rundll32.exe 作为加载程序,则必须使用入口点调用它,如下所示:

在这种情况下,DllMain 已被调用,但您会收到如下消息框错误:

Error in D:\blah\blahblah.dll
Missing entry: x

这很正常,这是因为您没有从 .dll 中导出任何外部可调用函​​数。 “x”在这里只是一个占位符,用于强制 rundll32 加载 .dll。如果您真的想使用 rundll32,请阅读以下内容:How does RunDll32 work?