首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++中WinMain、main和DllMain的区别

C++中WinMain、main和DllMain的区别
EN

Stack Overflow用户
提问于 2009-01-06 14:31:05
回答 3查看 15.7K关注 0票数 25

这三个函数之间有什么区别,什么时候使用它们?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-06 14:36:41

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

DllMain用于动态链接库来表示许多不同的场景。最值得注意的是,它将在以下情况下被调用

将DLL加载到进程中:从进程中卸载DLL_PROCESS_ATTACH

  • The DLL :在进程中启动DLL_PROCESS_DETACH

  • A线程:在进程中结束DLL_THREAD_ATTACH

  • A线程: DLL_THREAD_DETACH

DllMain是一个可选的构造,并且有许多与之相关联的隐式契约。例如,您不应该调用会强制加载另一个DLL的代码。一般来说,这是一个相当困难的函数,应该避免使用它,除非您有非常特殊的需求。

票数 10
EN

Stack Overflow用户

发布于 2009-01-06 14:37:33

main()表示你的程序是一个console application

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

DllMain()表示程序是一个DLL。DLL不能直接运行,而是由上述两种应用程序使用。

因此:

  • 在编写显示窗口等功能的程序时使用WinMain。
  • 在编写动态链接库时使用DLLMain。
  • 在所有其他情况下使用main。
票数 22
EN

Stack Overflow用户

发布于 2018-07-05 16:17:45

对你的问题的补充

另外,别忘了DllEntryPoint:

  • 当涉及到加载时间时,入口点是DllMain。

(例如COM进程内服务器DLL)。

  • 当涉及到运行时间时,入口点是DllEntryPoint。

(例如LoadLibrary被调用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/416739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档