WinMain,main和DllMain在C ++中的区别

这三个function之间的区别是什么以及何时使用它们?

WinMain用于应用程序(结束.exe)以指示进程正在启动。 它将提供进程的命令行参数,并作为进程的用户代码入口点。 WinMain(或主版本不同)也是一个必需的功能。 操作系统需要调用一个函数才能启动进程运行。

DllMain用于DLL来表示很多不同的场景。 最值得注意的是,它会在什么时候被调用

  1. 该DLL被加载到进程:DLL_PROCESS_ATTACH
  2. 该DLL从进程卸载:DLL_PROCESS_DETACH
  3. 线程在进程中启动:DLL_THREAD_ATTACH
  4. 线程在进程中结束:DLL_THREAD_DETACH

DllMain是一个可选的构造,并且有很多与之相关的隐式契约。 例如,你不应该调用强制另一个DLL加载的代码。 一般来说,这是相当困难的功能,应该避免,除非你有一个非常明确的需求。

main()意味着你的程序是一个控制台应用程序 。

WinMain()意味着该程序是一个GUI应用程序 – 也就是说,它显示窗口和对话框,而不是显示控制台。

DllMain()意味着程序是一个DLL 。 一个DLL不能直接运行,而是被上述两种应用程序所使用。

因此:

  • 在编写要显示窗口等的程序时使用WinMain
  • 当你写一个DLL时使用DLLMain。
  • 在所有其他情况下使用main。