C++ Exe按代码块构建几乎是VisualStudio相同代码构建的57倍

C++ Exe按代码块构建几乎是VisualStudio相同代码构建的57倍,c++,visual-studio-2010,codeblocks,C++,Visual Studio 2010,Codeblocks,此代码: #include <iostream> using namespace std; int main() { cout << "Hello world!\n"; return 0; } #包括 使用名称空间std; int main() { CUT 这是因为C++标准库是由G++连接静态的,而VS会动态地链接它。在CygWin下使用GCC的快速检查给了我大致相同的大小,并且所得EXE只导入了一些C函数。 #include <stdio.h

此代码:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello world!\n";
    return 0;
}
#包括
使用名称空间std;
int main()
{

CUT

这是因为C++标准库是由G++连接静态的,而VS会动态地链接它。在CygWin下使用GCC的快速检查给了我大致相同的大小,并且所得EXE只导入了一些C函数。

#include <stdio.h>
int main() {
  printf("Hello world\n");
  return 0
}
#包括
int main(){
printf(“Hello world\n”);
返回0
}

P>另一方面,这个应用程序编译到GCC下的最小EXE,因为它不需要任何C++功能。

你是对的,GCC的可执行文件显然是更大的,在你的情况下比VC++所生成的57倍。

主要原因是一个与制造 GCC不需要任何外部支持 创建时要运行的依赖项 VS2010至少需要它的运行时 要在系统上显示的文件

例如,假设你在某个朋友的电脑上没有安装vs2010,而是在XP这样的早期操作系统上尝试,甚至没有机会安装vs2010运行时

使用GCC构建的版本不会有问题,而使用VS2010构建的版本会抛出缺少运行时文件(依赖项)的错误


希望这有帮助,如果它没有或你有任何其他问题在你的脑海里,自由地问,我会很乐意帮助:)< /p>是否包括调试信息?如果你认为VS?+ 1 475 KB生成的.PDB文件的大小似乎太过了。我很好奇答案是什么。你说:“代码::块”,但它支持大量编译器。设置时您选择了哪一个?是否删除了代码块exe?VS debug info位于单独的文件中gcc的debug info与exe位于同一文件中(上次我检查这些内容时)运行时LOB是静态链接还是动态链接到exe?可能是重复的,所以你是说VC生成的可执行文件使用动态库,而GCC生成的可执行文件使用共享库?没有任何迹象表明这一点,但你可能是对的。