【发布时间】:2021-01-14 18:15:41
【问题描述】:
几天前,我开始通过 Windows 命令行编译 c++ 代码。 我的目标是尽可能减少输出的大小。 我使用 VS 2019 开发人员命令提示符来执行此操作。
---史前史---
我用cl main.cpp /link /SUBSYSTEM:WINDOWS编译了简单的程序只是为了测试编译,输出大约75kb。
源代码:
int main()
{
return 0;
}
之后我尝试使用/ENTRY:"main"手动设置入口点
cl main.cpp /link /SUBSYSTEM:WINDOWS /ENTRY:"main" 减少输出大小
我用相同的代码对其进行了测试,它可以工作,现在输出大小约为 3kb。
---实际问题---
这对我来说是一个巨大的成功。 然后我尝试在我的程序中使用标准库,但是当我使用命令编译时:
cl main.cpp /link /SUBSYSTEM:WINDOWS /ENTRY:"main"
源代码:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello" << endl;
return 0;
}
它给了我很多错误,我不明白。 Errors 我在整个互联网上搜索它们,但一无所获。 我发现错误必须与标准库 std 和链接器参数“/ENTRY:”main“”有关。
所以我的问题是:为什么我不能将"/ENTRY:"main"" 与标准库一起使用?
(抱歉我的拼写错误,我不是母语人士)
【问题讨论】:
-
在调用使用任何需要操作系统的东西的 main() 之前完成了很多初始化工作。在 main 上放置一个断点并检查调用堆栈以查看发生了什么。