8

以为我会用 C++ 而不是一些解释性语言编写一些东西(因为我需要简单的性能)并四处尝试不同的工具。

首先我发现 cygwin 因为它有 g++,但它需要 cygwin.dll 来运行 exe。

然后我尝试了mingw,但似乎我需要在libgcc和libgstd之类的发行版中包含一些dll,这会使可执行文件膨胀到大约MB(我真的不需要那么多字节来执行简单的文件I / O )

然后我查看了 Visual C++ 2010,因为我已经安装了它,但看起来我需要安装 2008 才能使用 .net framework 3.5。好吧,我不介意使用 4.0,但我想有很多人在他们的 Windows 机器上没有 4.0,读取文件会很不方便。

我可以使用什么来允许我传递小型 exe(例如:几 KB 的价值)来执行将在大多数 Windows 机器上运行的简单一次性事情?(因为它只与 Windows 用户相关)

还是我应该只使用 C 并使用 gcc 进行 mingw?

4

6 回答 6

8

至少有一些明显的候选人:

VC++:从 VC++ 2010 开始支持一些 C++11 特性。VC++11(目前处于 beta 测试阶段)增加了一些。具有相当不错的代码生成,很多人认为是您可以获得的最好的调试器,以及产生相当混合评论的 IDE。许多使用过它们的人认为老一代的 IDE(VC++5 和 6)至少在某些方面更好,但是从那以后编译器已经有了很大的改进,以至于老的 IDE 确实不是大多数人的选择(除了支持古代代码)。

MinGW:STL 的当前包具有 gcc 4.7.0,它(至少可以说)比 VC++ 具有更好的 C++11 支持。它包括很多移植的 Unix/Linux 工具,但基本上是一个仅限命令行的环境。如果您想要 IDE 之类的东西,则必须单独安装/配置它。

Cygwin:这也是基于 gcc 的,但他们没有将编译器移植到 Windows,而是将 Linux 移植到 Windows,并在移植的 Linux 上运行编译器。显然我夸大了(有点)但不是很多——Cygwin 主要是在 Windows 上运行 Linux/Unix 代码,尽可能少做改动。他们发布的工具也适合这一点——它正在尽最大努力成为在 Windows 内核下运行的类 Unix 环境。它绝对不会是我进行任何新开发的首选。

Qt Creator/SDK:这是 gcc 的另一个封装,但带有一个 IDE。如果您想使用 Qt 编写代码,它可能是您的首选。否则,我可能会避免它——虽然它可能可以正常工作,但它是在假设 Qt 作为默认值的情况下编写的。

Eclipse/CDT:您也可以找到它与 g++ 的副本一起打包。至少在我上次尝试的时候,它需要在配置上做很多工作,才能让它正确编译。如果您将 Eclipse 用于其他目的,那么将其用于 C++ 可能是值得的。否则,我个人会避免它。

C++ Builder:在 Borland 时代,这是微软主导地位的最大挑战者。Embarcadero 似乎正试图让它重新回到主流。这里的重点似乎更多地放在 IDE、GUI 工具包等上,而不是编译器本身。编译器本身似乎有点落后于 gcc 和/或 VC++。入门版的价格为 150 美元,并且将输出的销售额限制为 1000 美元,此时您需要将 1000 美元的大部分用于升级到专业版。

Clang:最近开始的主要编译器,但真正致力于成为最好的编译器之一。具有任何可用编译器的一些最佳诊断。以 LLVM 为目标,它为它提供了多种用于运行时分析等的工具。不过,它的主要企业赞助商是 Apple,因此虽然它在 Windows 上的 OS/X 上开箱即用(现在是那里的默认编译器),但您需要自己做更多的事情——AFAIK,您需要一些其他编译器安装并工作(并且真的知道如何使用它)来安装它。在 Windows 上,这有点像从垃圾场买一辆肌肉车。通过足够的工作,您最终可能会得到城里最酷的汽车——但在 Windows 上,它目前更像是一个项目而不是一个工具。

通常要避免的还有一些:

  1. 大约 2008 年之前的任何版本的 VC++。只是 C++ 的低级实现。
  2. 4.x 之前的任何 g++ 版本。同样,C++ 的低级实现。
  3. djgpp:几乎是最糟糕的。这确实针对带有(自定义)DOS 扩展器的 MS-DOS。一个古老版本的 gcc 完善了它的可怕之处。
  4. OpenWatcom:也主要针对 MS-DOS。它使用了一个比 djgpp 更好的 DOS 扩展器,但微弱的赞美几乎是该死的。编译器甚至不是非常接近于符合 C++98;C++11 更新让我觉得不太可能很快(如果有的话)。
  5. 数字火星:Walter Bright 现在主要使用他自己的 D 语言。尽管 C++ 编译器仍然可用,但它编译的 C++ 已经相当过时了。

总结:如果你想要一个 IDE,VC++ Express 是明确的选择。如果您更关心最新的 C++11 功能并且不介意从命令行工作,那么 MinGW 可能是首选。其他的肯定有利基,但如果你的目标主要是新的、编写可移植的 C++,我会认为它们中的大多数都逊色。

于 2012-06-07T21:03:37.960 回答
5

我目前在http://nuwen.net/mingw.html使用 Stephan Lavavej 的 MinGW 发行版

我使用它使用 gcc 生成 .exe 文件。

您只需要对他包含的工具集合感到满意即可。

于 2012-06-07T20:29:08.520 回答
2

我知道您的问题提到“允许我传递小型 exe”,但如果您(像我一样)对有时只运行 C++ 代码而不创建 exe 感兴趣,您可能想尝试Compile and Execute C++ Online .

于 2014-02-07T16:42:15.660 回答
1

然后我查看了 Visual C++ 2010,因为我已经安装了它,但看起来我需要安装 2008 才能使用 .net framework 3.5

嗯,C++ 和 .NET 彼此没有任何关系。

Visual Studio 是适用于 Windows的C++ 编译器。大多数其他人充其量只能提供较差的Windows支持。

于 2012-06-07T20:34:20.247 回答
-1

对于 Windows 上的简单 C/C++ 编译器,很难击败 djgpp: http: //www.delorie.com/djgpp/

于 2012-06-07T20:25:51.210 回答
-1

恕我直言:如今,拥有几 kb 的 exe 的唯一方法是使用 .net 框架,比如 2.0 尽可能兼容。

我猜你使用什么工具,你至少会静态链接标准库的某些部分,这将打破你对小型 exe 的要求。

于 2012-06-07T20:30:01.280 回答