【发布时间】:2010-09-29 19:49:37
【问题描述】:
这三个功能有什么区别,什么时候使用??
【问题讨论】:
标签: c++ windows entry-point winmain
这三个功能有什么区别,什么时候使用??
【问题讨论】:
标签: c++ windows entry-point winmain
main() 表示您的程序是console application。
WinMain() 表示程序是GUI application——也就是说,它显示窗口和对话框,而不是显示控制台。
DllMain() 表示程序是DLL。 DLL 不能直接运行,但供上述两种应用程序使用。
因此:
【讨论】:
main。使用非标准启动功能没有技术原因。
WinMain 用于应用程序(以 .exe 结尾)来指示进程正在启动。它将为进程提供命令行参数,并作为进程的用户代码入口点。 WinMain(或不同版本的 main)也是必需的函数。操作系统需要调用一个函数来启动一个正在运行的进程。
DllMain 用于 DLL 以表示许多不同的场景。最值得注意的是,当
DllMain 是一个可选构造,并且有很多与之相关的隐式契约。例如,您不应该调用会强制加载另一个 DLL 的代码。一般来说,要正确使用它是相当困难的功能,除非您有非常特殊的需要,否则应该避免使用它。
【讨论】:
[您的问题的附录]
也不要忘记 DllEntryPoint:
当涉及加载时间时,入口点是 DllMain。
(例如 COM 进程内服务器 DLL)。
当涉及运行时间时,入口点是 DllEntryPoint。
(例如 LoadLibrary 被调用)。
【讨论】: