【发布时间】:2021-08-17 09:23:42
【问题描述】:
我在这里搜索过,但这些问题都没有帮助我,所以是的,我会解释一下: 我的 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;
}
谢谢
【问题讨论】:
-
不要使用
MessageBox来调试与DllMain有关的问题。使用OutputDebugString。我打赌函数 is 被调用了。 -
@PaulMcKenzie 谢谢,但它不起作用我的输出是这样的 pastebin.com/raw/S7QYXpe5 我的代码是这样的:pastebin.com/raw/HXVWEqSm 我在输出中看不到任何“我正在运行”
-
如果你使用rundll32,请确保你像这样
rundll32 blahblah.dll,something运行它,否则rundll32什么都不做。 -
为了调用dll中的某些函数,需要先加载dll本身进行处理。你的dll加载了吗?基于pastebin.com/raw/S7QYXpe5 - 没有。那你想要什么?
-
“我的 Dllmain 函数在附加到进程时没有被调用” - 你在做什么导致进程实际加载你的 DLL?问题中缺少像这样的重要细节,因此甚至很难猜测出什么问题(代码或您的期望)。
标签: c++ winapi dll messagebox dllmain