【问题标题】:Unmanaged C++ Win32 API or C#?非托管 C++ Win32 API 或 C#?
【发布时间】:2011-01-17 12:12:51
【问题描述】:

下午好,

我考虑过编写一个我可能会或可能不会商业化的应用程序,这取决于最终应用程序的好坏。这就像一个个人项目,我希望通过它学习更多关于编程的东西,因为目前我对 C 和 C# 了解最多。这就是为什么我考虑将这个项目作为非托管 C++ Win32 应用程序启动。问题是,与 C# 相比,即使显示一个简单的窗口也是最困难的......

在当今的商业世界中有多少人/公司使用 Win32 API 和 C++?与 C# 相比,它的性能如何?

相关应用程序最终可能是特定语言的 IDE,但已内置命令识别和拼写检查等功能。

非常感谢。

【问题讨论】:

    标签: c# c++ winapi unmanaged managed


    【解决方案1】:

    似乎当需要性能时,人们愿意为了 C++ 而放弃 C#。 看看这个“成功”故事Lessons from Evernote’s flight from .NET

    在我们的测试硬件 Evernote 4 上 启动速度快五倍,并使用 Evernote 3.5 内存的一半。

    Evernote 选择了WTLChromium Embedded Framework。基本上,他们在应用程序中重复使用了 Google 的 Chrome。

    【讨论】:

      【解决方案2】:

      对于您的第一个项目并且没有之前的 C++ 和 Win32 经验,我强烈建议您使用 C#,因为这样您可以更轻松地完成工作,从而获得信心和技能。

      【讨论】:

        【解决方案3】:

        我是 windows 下的 C++ 的忠实粉丝,我成年后的大部分时间都在做这件事。也就是说,如果您没有 C++ 经验,并且想要编写 Windows 应用程序,我建议您使用 .NET 下的 C# 路线。虽然我喜欢原生 C++,但我真的不喜欢 C++/CLI,以及可恶的 ^ 后缀作为参考。

        鉴于这是一个个人项目,我不会太担心企业使用 C++ 还是 C#,但我会说现在找到 C# 开发人员比找到 C++ 开发人员更容易。不,我在这里并不偏爱一种语言,它似乎就是现实(至少在我的经验中)。至于 C++/CLI 开发人员?它们在地面上有点薄:)

        使用 C# 肯定会比使用 Visual C++/MFC/some-other-gui 更快地启动和运行,但请记住,有些事情在 C# 中可能无法完成(并且必须导入通过DllImport 调用本地win32 调用),但我怀疑你会遇到这些边缘情况。

        【讨论】:

        • 两者的结合是,恕我直言,最好的。在需要速度和非 GUI 工作的地方编写非托管 C++ 代码。然后在 C# 中使用这些 DLL 作为用户界面。
        【解决方案4】:

        C# 是最简单的路线,也是 Microsoft 最常推动的路线。但是,他们没有告诉您的是,他们所有的头条产品(Visual Studio 的部分除外)都是用 C/C++ 编写的。我想说,事实上,你所熟悉的大多数主要软件包都是用 C/C++ 编写的。

        【讨论】:

          【解决方案5】:

          我也会选择 c#,因为它在商业世界中(至少在 GUI 方面)比非托管 c++/win32 更常见。您还可以更快地获得想要的结果,尤其是在您不懂 c++ 的情况下。

          另一方面,c++ 性能更好(如果编写得当的话)——所以如果你计划在你的应用程序中进行一些密集的工作——也许 c# 无法处理它(但我强烈怀疑这种情况)。

          最后,但并非最不重要的一点 - 如果您正在计划客户,由于某种原因没有也无法获得 .NET 框架(或任何其他框架,即 Java) - 那么本机代码是您唯一的解决方案。

          【讨论】:

            【解决方案6】:

            我只使用 C++ 几年,但我从未编写过任何需要用户界面的程序。当我这样做时,我试图学习使用 Qt,但发现它有点痛苦并最终放弃了。我最近刚开始学习 C# .NET 课程,第一周我已经开始为我的公司计费系统开发一个非常高级的应用程序。

            如果您已经是一位经验丰富的 C++ 资深人士,并且更喜欢 C# .NET,那么我会说一定要去做。但是,在这种情况下,出于多种原因,我强烈建议您使用 C# .NET。

            1) 无论您使用何种 API,在 C# 中做某事所需的时间可能至少比在 C++ 中快 10 倍左右。

            2) C++ 的学习曲线加上已经尝试使用 UI 编写应用程序(这在 C++ 中已经非常困难)将使这需要非常长的时间。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-01-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多