【问题标题】:When do I need the Windows SDK and what is .NET for?我什么时候需要 Windows SDK 以及 .NET 的用途是什么?
【发布时间】:2011-04-15 13:05:42
【问题描述】:

我是一名学生,在学习了一些 Java、C 的入门编程课程之后,我刚刚完成了一本关于 C++ 的书,我想开始为 Windows 开发应用程序。

我已经尽我所能通过谷歌页面找到我需要的答案,但我似乎不知所措。

我什么时候需要 Windows SDK 而不是常规 API? 什么是 .NET,我为什么需要它? C# 有什么特别之处,我应该在 C/C++ 上使用它吗?

【问题讨论】:

  • +1 - 为此建议社区 Wiki

标签: c# .net c++ c winapi


【解决方案1】:

我什么时候需要 Windows SDK 而不是常规 API?

SDK 包括头文件、库、工具等,可让您访问 API(以及 .NET,就此而言)。例如,典型的基于 API 的程序将以 #include <windows.h> 开头——但如果没有 SDK,您就没有要包含的 Windows.h 副本。同样,SDK 包括编译器(与当前版本的 Visual C++ 中包含的实际编译器相同)、链接器、调试器等,这些都是实际构建基于 API 的程序所必需的。

什么是 .NET,我为什么需要它?

.NET 是几样东西:一个虚拟机,它以微软所谓的“中间语言”(IL) 执行代码。它也是 IL 中的(大型)代码库,用于从窗口管理和绘图到通信、系统管理等所有方面。

如果您使用基于 .NET 的语言(例如 C#、VB.NET 等)编写代码,则主要需要它。

C# 有什么特别之处,我应该在 C/C++ 上使用它吗?

C#(到目前为止)是 .NET 开发的首选语言。 Microsoft 确实开发了 Visual BASIC 的 .NET 版本,并且至少与 C++ 非常相似,但两者都往往落后于 C#(充其量)。

因此,如果您正在专门为 Windows 开发代码(尤其是如果它包含 GUI),C# 可能是您的首选。与支持 C 或 C++ 相比,微软在支持它方面做得更多。这体现在对库和工具的更好支持中。

支持使用 C 或 C++ 的主要论据可能是您主要为 Linux 开发,然后将代码移植到 Windows。如果您愿意,您仍然可以在 C# 中进行此类开发(例如,您可以使用 Mono 在 Linux 下运行 C# 和 .NET),但特别是如果您在 Linux 下进行开发工作,您将失去大部分优势。

另一方面,如果您的代码不涉及 GUI,您也许可以编写可移植的 C 或 C++,并在 Windows 和 Linux 下编译它。在这种情况下,使用 C# 可能会涉及额外的工作,例如必须安装 Mono 才能在 Linux 下运行代码——这不是一项非常困难的任务,但即使是相当简单的安装也比不安装要多工作。

【讨论】:

  • +1 - 不错的答案。鉴于我们现在处于 .Net 4.0,我认为“本月风味”有点不屑一顾——这不仅仅是微软的一种时尚,它是他们企业发展的战略方向,除了最专业的用途之外,它取代了 Win32。相比之下:.Net Remoting 是“本月最佳”,例如,现在他们希望所有人都使用 WCF。顺便说一句,Windows SDK 将 Platform SDK 和 .Net Framework SDK 组合成一个包。
  • @Steve:很公平——已修改。
  • 非常感谢!您的回答非常有帮助!
  • 为什么没有 .NET Framework 就无法安装 Windows SDK?我尝试安装 SDK,但它停止并抛出了我没有一些 .NET 组件的错误。这是我的问题stackoverflow.com/questions/12446016/…
【解决方案2】:

Windows SDK 是一个低级框架,用于专门为 Windows 开发应用程序。您可以将其用于您的开发。但是,API 是低级的,使用和维护有点困难。

或者,您可以使用 .Net。 .Net 是一个包含应用程序运行时支持的框架。它有很多包,我相信你会在 .Net 中找到一些有用的东西。 .Net 需要一个运行时来执行,并且不是本机编译到平台的。但是,软件开发更容易,主要是因为 API 级别更高。

C# 是推荐用于 Windows 特定编程的语言,特别是在 .Net 上。并不是说它是唯一的语言,你也可以使用 C/C++,但微软并不积极支持它们。例如,如果您使用 C#,只需单击几下鼠标即可创建 GUI 应用程序。使用 C++,您需要管理您的 windows 实例。

通常,如果您在进行跨平台编程或一些低级的东西,您只会使用 C/C++ 进行 Windows 编程。

【讨论】:

  • “通常情况下,如果您在进行跨平台编程或一些低级的东西,您只会将 C/C++ 用于 Windows 编程。” - 我必须反对这种说法,因为人们(包括我)广泛使用 C++ 进行应用程序开发(和其他事情)。
  • 另外,没有像 C/C++ 这样的语言。它们是两种不同的语言。此外,C++ 实际上得到了微软的积极支持。 Visual C++ 团队有他们自己的博客 (blogs.msdn.com/b/vcblog) 并发布了 Visual C++ 2010,其中部分支持 C++0x,即最新版本的 C++。如果您熟悉 C++,那么使用 C++ 进行 Windows 编程就更好了。
  • “使用 C++,您需要管理您的 Windows 实例。” - 我也不得不反对这种说法,因为有 C++ 技术可以让你不用担心使用像 RAII 这样的成语来管理资源。
  • @In silico:我确定他所说的 C/C++ 是 C 还是 C++。
  • @Paul:Visual C++ 是编译器,IDE 是 Visual Studio :)
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多