首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinMain入口点- VS Linker vs Windows

WinMain入口点- VS Linker vs Windows
EN

Stack Overflow用户
提问于 2016-01-21 21:50:14
回答 1查看 842关注 0票数 0

我通过Visual配置将我的应用程序(MASM汇编语言程序)入口点设置为:

代码语言:javascript
复制
Linker\System\SubSystem:    Windows (/SUBSYSTEM:WINDOWS)
Linker\Advanced\Entry Point:    WinMain

任何我的主要程序称为WinMain (与上述设置相匹配)。它是一个简单的Windows调用的基本应用程序,例如MessageBoxA.而且起作用了。

现在我正在构建一个窗口应用程序(在程序集中),我在某个地方读到需要调用WinMain Windows作为入口点的地方。

我现在很困惑!使用哪种技术将入口点设置为我的应用程序(exe)?Windows调用'WinMain‘还是Visual链接器入口点设置?C++运行时和OS之间的区别是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 02:01:24

如果您正在使用C运行时库(在用C进行编程时通常是这样),那么您就不能自己指定链接器入口点。如果这样做,运行库库将无法正确初始化,任何运行时库调用(包括编译器插入的调用)都可能失败。

相反,您的主要功能应该与相关标准相对应: GUI应用程序的WinMain(),控制台应用程序的main()

在未链接到C运行时库的汇编语言程序中,应指定所选的入口点。

本机入口点的签名

代码语言:javascript
复制
DWORD CALLBACK RawEntryPoint(void);

重要:

从原始入口点返回隐式调用ExitThread (请参阅这个答案),这通常不是正确的做法,因为如果Windows创建了任何您不知道的线程,进程将在它们创建之前不会退出。请注意,Windows文档并不总是指示特定API函数何时会导致线程被创建。

相反,您应该显式地调用ExitProcess。这是C运行时库从WinMain()或main()返回时所做的工作。

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

https://stackoverflow.com/questions/34934999

复制
相关文章

相似问题

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