问题 我什么时候需要Windows SDK以及什么是.NET?


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

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

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


3717
2017-09-22 04:34


起源

+1 - 为此建议社区Wiki - Steve Townsend


答案:


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

SDK包括标题,库,工具等,使您可以访问API(以及.NET)。例如,一个典型的基于API的程序将从一开始 #include <windows.h>  - 但是没有SDK,您没有要包含的Windows.h副本。同样,SDK包括实际构建基于API的程序所必需的编译器(当前版本的Visual C ++中包含的相同实际编译器),链接器,调试器等。

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

.NET有两个方面:一个虚拟机,用于执行微软称之为“中间语言”(IL)的代码。它也是IL中的一个(大型)代码库,用于从窗口管理和绘图到通信,系统管理等各种事务。

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

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

C#是微软最喜欢的风格,可以这么说。这是他们自己发明的一种语言,他们通常会推广大多数替代品  在.NET下使用的主要语言(尽管很少直接说明,至少暗示,对于任何新的开发)。虽然最初有人指责C#仅仅是对Java的剽窃,但实际上它有一些Java没有对应的功能(例如代理),并且已经增加了更多(例如,语言集成查询)。

至于是否使用C#而不是C或C ++,这很可能在很大程度上取决于您编写的代码类型。 C#允许您访问包含真正的.NET库 巨大 预编码的数量。如果您在应用程序中需要执行的操作几乎完全在.NET库支持的范围内,那么能够使用该代码可能会使您的工作成为可能 基本上 更轻松。 C#的一些功能在C或C ++中也没有直接的对应物,因此如果您的代码可以从这些功能中获益更多,C#可能会使这样的工作变得更加容易。最后,Microsoft在C#的支持基础架构上集中了大量精力,因此他们的许多工具(包括但不限于Visual Studio)基本上都是为了支持C#而编写的,并且往往不会支持其他语言。

OTOH,如果你想做.NET所做的事情  提供预先编写的代码,情况可以很快改变。 C#支持一种机制(称为P / Invoke),允许您使用.NET不提供包装器的操作系统函数。不幸的是,P / Invoke使用起来相当痛苦 - 如果你必须非常使用它,那么C ++(或者甚至是C)很有可能会更有效率。

我还应该提一下,虽然看起来微软已经致力于 更多 与其他语言相比,C#新开发的资源,他们显然仍然在进行C ++及其MFC应用程序框架的新开发。毫无疑问,就新代码的数量而言,他们显然在使用.NET做得更多。尽管如此, 一些 MFC的新发展恰好出现在他们所拥有的领域  在.NET中开发,所以MFC有一些功能,.NET没有提供对应的功能。


18
2017-09-22 05:44



+1 - 很好的答案。鉴于我们现在处于.Net 4.0,我认为“本月风味”有点不屑一顾 - 这不仅仅是微软的一种时尚,它是企业发展的战略方向,取代Win32,除了最专业的用途。相比之下:.Net Remoting是“本月风味”,现在他们希望所有人都使用WCF。 btw Windows SDK将Platform SDK和.Net Framework SDK结合到一个软件包中。 - Steve Townsend
@Steve:足够公平 - 修改过。 - Jerry Coffin
非常感谢!你的回答非常有帮助! - Andrew Guenther
为什么没有.NET Framework就无法安装Windows SDK?我试图安装SDK,但它停止并抛出一个错误,我没有一些.NET组件。这是我的问题 stackoverflow.com/questions/12446016/... - Green


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

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

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

通常,如果您正在进行跨平台编程或某些低级内容,则只能使用C / C ++进行Windows编程。


-4
2017-09-22 04:43



“通常,如果你正在进行跨平台编程或一些低级别的东西,你只会使用C / C ++进行Windows编程。” - 我必须反对这个陈述,因为人们(包括我)广泛使用C ++进行应用程序开发(和其他事情)。 - In silico
此外,没有C / C ++这样的语言。他们是两种不同的语言。此外,C ++实际上是由Microsoft积极支持的。 Visual C ++团队有自己的博客(blogs.msdn.com/b/vcblog),并发布了部分支持C ++ 0x(最新版本的C ++)的Visual C ++ 2010。如果您对C ++感到满意,那么使用C ++进行Windows编程就更好了。 - In silico
“使用C ++,您需要管理您的Windows实例。” - 我也必须反对这个陈述,因为有些C ++技术可以让你不用担心使用像RAII这样的习语来管理资源。 - In silico
@In silico:我确定C / C ++的意思是C或C ++。 - Paul
@Paul:Visual C ++是编译器,IDE是Visual Studio :) </ nitpick> - snemarch