【问题标题】:Why is /ENTRY linker option not required?为什么不需要 /ENTRY 链接器选项?
【发布时间】:2011-12-22 09:42:54
【问题描述】:

我注意到在 VC++ 控制台项目的默认链接器设置中,“入口点”为空。在我看到的生成的可执行文件上使用 dumpbin

entry point (004110FF) @ILT+250(_mainCRTStartup)

我还检查了项目属性的命令行选项,没有给出“/ENTRY”链接器选项。

那么链接器如何确定生成的可执行文件的入口点呢?我可以想到 2 个选项:

1) 有一些 "#pragma comment(linker, "/enty:_mainCRTStartup") 埋在 CRT 中 源代码。但是没找到。

2) 链接器本身从“/SUBSYSTEM:CONSOLE”选项中获取此信息。 所以 Visual Studio 中的选项只会覆盖 link.exe 所做的选择

你有什么想法吗?

【问题讨论】:

  • 对不起,我自己找到了答案。只是分享我的发现:我的第二个猜测是正确的。链接器本身从给定的其他设置(例如 /subsystem:console)中获取此信息。见 MSDN link 所以只有当你想提供除 _mainCRTStartup 之外的入口点时,才需要项目属性中的选项。
  • 您应该添加您的评论作为您自己问题的答案,然后在系统允许时接受它。

标签: visual-c++ linker msvcrt


【解决方案1】:

第二个猜测是正确的。链接器本身从给定的其他设置(例如 /subsystem:console)中获取此信息。见MSDN link。所以只有当你想提供一个入口点而不是 _mainCRTStartup 时才需要项目属性中的选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多