15

我已经决定要更多地使用 C++ 进行本机代码开发。我正在尝试决定使用 CodeGear C++ Builder 2009 还是 Visual Studio 2008 是否会更好。我目前使用 Delphi 2007,所以我对 C++ Builder 的 IDE(它与 Delphi 相同)以及VCL 和 RTL。

我从来都不是 MFC 的忠实粉丝(从我在 VS 6.0 时代第一次使用它开始),但从那时起就没有仔细研究过它。

我很想听听一些对这两种 IDE 都有经验的专家的意见,无论它们是否是最新版本。

现在,我倾向于 C++ Builder,因为我相信 VCL 比 MFC 更健壮且更易于使用 --- 但正如我所说,我已经有一段时间没有使用 MFC 了。我对构建依赖于 .NET Framework 的程序不感兴趣,因为我部分地自学了本地开发。MFC 仍然是 Windows C++ 的王者吗?还是 WTL 或 ATL 是大事?

有任何 C++ 大师想分享他们的意见吗?

编辑:我了解 MFC 不是 Visual Studio 的唯一 gui 工具包。但是,我正在寻找一些基于 GUI 工具包 + IDE 的建议。对于 C++ Builder,只有 1 个真正的选择,即 C++ Builder + VCL。对于 VS 2008,它是 VS + MFC/ATL/WTL/QT....让我很困惑,因为我对它们了解不多。

4

15 回答 15

16

来自 Delphi,您会发现 VCL 可以直接与 C++ Builder 一起使用。有一些奇怪的地方,比如 C++ 并没有隐藏 TObjects 都是真正的指针这一事实(Delphi 对你隐藏了),并且像数组属性这样的一些东西的访问方式不同。

两三年前,我一直在寻找摆脱 C++Builder 的任何方法,但现在,随着最近的发布(以及 Embarcadero 对 Codegear 的收购),我对产品和方向感到满意。

您会发现使用 C++Builder 时字符串类型的数量和各种潜在的不兼容性非常痛苦,但您会习惯的!(std::string、char[]、wchar_t[]、TCHAR、AnsiString、WideString、UnicodeString 和 String 等等)

就我个人而言,我会投票支持 C++ Builder - 因为双向 RAD 和 VCL,尽管它可能不是学习现代 C++ 习语的最佳方式。

于 2009-01-12T23:25:24.057 回答
13

Visual Studio 和 MFC 不一样。我一直都在使用 Studio,并且像瘟疫一样避免使用 MFC。您可以使用 WTL、ATL、Win32 或任意数量的库来创建没有 MFC 的应用程序。

于 2009-01-12T23:18:45.147 回答
10

简单的答案是,对于纯 C++ 开发,它必须是 VC++。

扩展:作为一个纯 C++ 开发环境,你根本无法击败 VC++,调试器更好,IDE 更优越(当然都是恕我直言)。由于这些原因,我用它来开发库,然后从 C++Builder 中使用这些库。

但是,一旦您开始进行 UI 开发,或者任何您可以使用 VCL 或组件 C++B 解决的问题,都是更好的选择。与 VCL 相比,MFC 或 ATL 相形见绌,因此您只能使用 .NET,这可能是一个更好的选择,但不是

我不确定我是否会根据供应商最近几年的“指导”来推荐使用 C++B 或 Delphi 构建新产品。然而,情况似乎正在好转,但直到再过一点时间,很难说这些承诺是如何变成现实的。

于 2009-01-13T00:20:06.643 回答
6

如果您在 Windows 上进行纯 C++ 开发,那么很难击败 VS。编译器速度很快,非常符合标准,并且可以生成经过优化的代码。调试器是任何平台上最好的。IDE 没问题。

它显然也是 Windows 上支持最广泛的编译器工具链。下载任何开源项目/库,如果支持 Windows,它很可能是使用 VS 构建和测试的。它的受欢迎程度还确保它是简历中最有用的。

Builder给你什么?一个合理的 GUI 库。嗯,这很好,但还有许多其他不错的 GUI 工具包(wxWidgets、GTK、Qt 等)。许多是开源和跨平台的。

然而,这些天来,我发现重组我的应用程序以提供 API 并在其之上以不同的语言构建 GUI 会更好。C++ 的强项在于 GUI 开发。至少今天不会……

我会选择 - 并推荐 - VS 而不是 Builder。

于 2009-01-13T13:02:35.310 回答
5

我已经多年没有使用 C++ Builder,但在 C++ 调试方面,Visual Studio 2008 远远领先于其他 IDE 和以前的 VS,特别是如果您使用 STL 容器,因为它可以很容易地检查它们的内容。

然而,在 GUI 方面,C++ 现在对于微软来说是一种二流语言。未来的方式是 WPF,并且不支持 C++ 作为 XAML 友好的语言我们将继续投资于 C++/CLI,以使开发人员能够将本机 C++ 资产暴露给托管世界,反之亦然。我们相信纯 .NET 开发最好使用以 .NET 为中心的语言,例如 C# 或 VB。对 C++/CLI 的投资将主要集中在本机管理的互操作领域。

因此,要创建具有现代外观的C++ GUI,您的最佳选择可能确实是 VCL - 如果 VCL 继续使这成为可能 ;-)

于 2009-01-13T01:05:07.410 回答
3

在基于 UI 的开发和面向数据库的应用程序方面,C++ Builder 远远优于 MS-VS。MFC 太烂了!!但是 VS 有更好的调试能力。

于 2010-02-25T10:51:27.163 回答
2

鉴于您已经了解 Delphi,我第二次选择 C++ Builder。自 VS6 时代以来,MFC 并没有太大变化,因此使用 MFC 编写的代码仍然看起来很糟糕。但是,VS 发生了变化,现在是一个相当不错的 IDE。

另外,请记住,C++ Builder 作为产品线并不稳定。过去有时它没有得到维护/它的未来尚不清楚等。所以如果你想建立一些持久的东西,你就会抓住机会。

于 2009-01-13T00:02:37.117 回答
2

只是为了它,我们可以把 Eclipse 也加入其中吗?
我刚刚发现在 Eclipse 中工作比在 Visual Studio 中工作要好。

除非您将 VS2008 与 winforms 一起使用,否则 gui 支持是通过 windows 模板(通常来自资源),这是旧帽子,您可能不想使用。所以 VS2008 中的 gui 支持并没有那么特别。

至于 gui 工具包,或许可以看看What is a good GUI/widgets toolkit

于 2009-01-13T02:21:20.860 回答
2

好吧,你可以使用 Eclipse + MinGW + Qt4 + QT Eclipse Integration 并获得所有东西:调试器、可视化 GUI 设计器等。

请注意,Qt4 是双重许可的:开源和商业许可。

您还可以将 Qt4 与 Visual Studio(甚至与 Express)结合使用,并使用 VS 为您提供的所有优点。

对我来说,Qt4 是要走的路,VS over Builder。

于 2009-01-13T13:30:28.703 回答
2

几年前我喜欢 C++ Builder。太棒了。它的 VCL 比 VS 的糟糕 MFC 要好得多。然后事情每年都在变化。

Builder一直在下降;1. Builder 没有更新任何真正的功能。2. Borland 放弃了用 C++ 重写 VCL 以与 Kylix 和 Builder 3 一起使用的想法。CodeGear 的混乱和 Builder 的不确定未来使许多人放弃了该产品。

VS一直在变好;1. IDE 改进了很多 2. 从 windows 平台上最不符合标准的编译器变成了最符合标准的编译器(当然不包括 MinGW 上的 GCC) 3. .NET 出现了,有 Managed C++,然后是 C++/ CLI 使在 C++ 中使用这个框架成为可能

我们有新的、强大的玩家 1. Eclipse 2. Qt Creator

和新的 GUI 工具包

  1. wxWidgets
  2. Qt4 现在也有开源许可证

总结;Builder 死了,因为 Borland

  1. 以为德尔福太棒了,他们真的不需要任何其他东西来赚钱
  2. 陷入Java炒作,投入过多资源
  3. 不了解 C++ 的强大功能,而是堆栈到帕斯卡,帕斯卡一直是学术语言,没有用它创建过真正的产品
于 2009-05-04T11:39:19.220 回答
1

在 Windows 开发方面,没有什么比 Visual Studio 更胜一筹。它功能非常丰富,并且具有出色的调试器,更不用说庞大的用户社区来帮助您解决可能遇到的任何问题。如果一家公司为他们自己的操作系统开发的工具不是最好的,我会担心他们在软件世界中的地位。但是,如果您不需要额外的功能并且绝对需要具有拖放功能的 RAD 工具(除了 MFC),那么 C++ builder 也不会落后太多。事先使用 delphi 环境对您来说只是一个优势。

于 2009-01-13T00:23:31.520 回答
1

关于 CodeGear 的最后一个 C++ Builder(我的意思是 2009 版本)的一件事是,它的更新真的会让你讨厌这个 IDE。
安装第二次更新后,我发现 if/else 块不能正常工作。它可以输入 IF 语句,但不能输入 else 语句——而且它不依赖于情况——这个语言指令根本就停止了工作。我花了大约两三个小时才弄明白——我开始在 VS 中开发所需的 win32 应用程序,我认为它比 CodeGear 产品更可靠。我不喜欢的第二个功能是你不能关闭 Unicode 支持并且必须明确使用 ANSI 版本的 win32 函数(例如 SendMessageA(...)),这很无聊。我几乎没有按时完成使用 VS2008 完成的工作。
这只是我的经验,做出的选择是你的

于 2009-01-13T08:20:41.823 回答
1

试试拉撒路。一次编写,多次编译。在多个平台上运行。任何来自 Delphi 和 Kylix 背景的人都会对这个 RAD 工具感到非常自在。至于未来,它是开源的,拥有强大的社区,发展将不受商业约束。

于 2012-11-18T23:34:09.773 回答
1

对于本机 C++ 开发,我既不想使用 C++ Builder 也不想使用 VS。这些 IDE 都针对其框架的使用进行了优化。

我宁愿选择 Eclipse、Code::Blocks 或 Codelite。这些 IDE 没有针对任何框架进行优化,您可以在严重平台上的多个编译器之间切换。

于 2018-06-29T05:55:19.127 回答
0

2012年即将结束。我是 Borland C++ 用户,然后转而使用 VC++ 6.0。最近有一个客户要求他们的产品有一个 GUI 端并且不希望依赖于 .NET 框架。所以我探索了 Embarcadero RAD Studio XE2。

当谈到 C++ RAD 开发时,我认为甚至 MSVC++ 都无法与之相提并论。就像一阵微风。虽然我在编译模板时发现了问题。例如,如果您定义了一个仿函数,并且想要将构造函数与仿函数调用结合起来,那么您不能在 C++B 中做到这一点,您必须创建一个对象,然后单独调用仿函数。还有其他问题,因为我无法完全编译 Poco 库。

我通过在 VC++ 中创建 DLL 并从 C++B 前端调用它们找到了解决方案。两者兼得。

我希望 Embarcadero 尽快赶上标准。

于 2012-11-18T04:27:27.537 回答