gpt4 book ai didi

c - mainCRTStartup 与 wmainCRTStartup

转载 作者:可可西里 更新时间:2023-11-01 11:48:48 26 4
gpt4 key购买 nike

I understand that Visual C++ Linker chooses mainCRTStartup/wmainCRTStartup when option /SUBSYSTEM is set to CONSOLE.

我不明白的是链接器如何在两者之间进行选择。

我在VC 2015上用一个简单的程序测试过,如果wmain存在(连main也存在),就调用wmain。否则调用 main。

最佳答案

链接器将尝试通过遍历 objs 的符号表来推断需要哪个入口点例程。它在 _main 之前搜索 _wmain,这就是为什么选择前者,即使您同时拥有两者。然后链接器从您的默认 libc 静态库中提取适当的启动例程。

您可以通过向链接器提供/ENTRY、/DEFAULTLIB 和/NODEFAULTLIB 选项来覆盖其中的大部分内容。但通常情况下,您让链接器自动处理它。

此外,您的程序中应该只有一个主要的 C 函数。要么显式定义其中之一,要么走 TCHAR 路线,让编译器根据是否定义了 UNICODE 将 _tmain() 替换为 main() 或 wmain()。

关于c - mainCRTStartup 与 wmainCRTStartup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36187320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com