这三个函数有什么区别以及什么时候使用它们?

有帮助吗?

解决方案

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

DllMain用于DLL表示许多不同的场景。最值得注意的是,它将在

时调用
  1. 将DLL加载到进程中:DLL_PROCESS_ATTACH
  2. 从进程中卸载DLL:DLL_PROCESS_DETACH
  3. 在此过程中启动一个线程:DLL_THREAD_ATTACH
  4. 线程在此过程中结束:DLL_THREAD_DETACH
  5. DllMain是一个可选构造,并且有很多与之关联的隐式契约。例如,您不应该调用将强制加载另一个DLL的代码。一般来说,正确的功能是相当困难的,应该避免,除非你有一个非常具体的需要。

其他提示

主要的() 意味着你的程序是 控制台应用程序.

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

DLLMain() 意味着该程序是一个 DLL. 。DLL不能直接运行,但可以被上述两种应用程序使用。

所以:

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

[您的问题的附录]

另外不要忘记 DllEntryPoint:

  • 当涉及加载时间时,入口点是 DllMain。
    (前任。COM 进程内服务器 DLL)。

  • 当涉及运行时间时,入口点是 DllEntryPoint。
    (前任。LoadLibrary 被调用)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top