C++中WinMain、main和DllMain的区别
-
03-07-2019 - |
题
这三个函数有什么区别以及什么时候使用它们?
解决方案
WinMain用于应用程序(结束.exe)以指示进程正在启动。它将为进程提供命令行参数,并充当进程的用户代码入口点。 WinMain(或不同版本的main)也是必需的功能。操作系统需要调用函数才能启动正在运行的进程。
DllMain用于DLL表示许多不同的场景。最值得注意的是,它将在
时调用- 将DLL加载到进程中:DLL_PROCESS_ATTACH
- 从进程中卸载DLL:DLL_PROCESS_DETACH
- 在此过程中启动一个线程:DLL_THREAD_ATTACH
- 线程在此过程中结束:DLL_THREAD_DETACH 醇>
DllMain是一个可选构造,并且有很多与之关联的隐式契约。例如,您不应该调用将强制加载另一个DLL的代码。一般来说,正确的功能是相当困难的,应该避免,除非你有一个非常具体的需要。
其他提示
主要的() 意味着你的程序是 控制台应用程序.
WinMain() 意味着该程序是一个 图形用户界面应用程序 ——也就是说,它显示窗口和对话框而不是显示控制台。
DLLMain() 意味着该程序是一个 DLL. 。DLL不能直接运行,但可以被上述两种应用程序使用。
所以:
- 当您编写要显示窗口等的程序时,请使用 WinMain。
- 编写 DLL 时使用 DLLMain。
- 在所有其他情况下使用 main。
[您的问题的附录]
另外不要忘记 DllEntryPoint:
当涉及加载时间时,入口点是 DllMain。
(前任。COM 进程内服务器 DLL)。当涉及运行时间时,入口点是 DllEntryPoint。
(前任。LoadLibrary 被调用)。
不隶属于 StackOverflow