我是一名学生,在参加了一些Java,C的入门编程课程,并刚刚完成了一本关于C ++的书籍后,我想开始为Windows开发应用程序。
我已经尽力通过谷歌寻找并找到我需要的答案,但我似乎不知所措。
我什么时候才需要Windows SDK而不仅仅是常规API? 什么是.NET,为什么我需要它? C#有什么特别之处,我应该在C / C ++上使用它吗?
答案 0 :(得分:21)
我什么时候才需要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#是微软最喜欢的风格,可以这么说。这是他们自己发明的一种语言,他们通常会将大部分替代品作为 主要语言在.NET下使用(尽管很少直接说明,至少暗示,对于任何新开发)。虽然最初有人指责C#只不过是对Java的剽窃,但它实际上有一些Java没有对应的功能(例如,委托),并且已经添加了更多(例如,语言集成查询)。 / p>C#有什么特别之处,我应该在C / C ++上使用它吗?
至于是否使用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没有提供的功能
答案 1 :(得分:-3)
Windows SDK是一个用于开发专门用于Windows的应用程序的低级框架。您可以将它用于开发。但是,API是低级的,有点难以使用和维护。
或者,您可以使用.Net。 .Net是一个包含运行时支持的框架。它有很多包,我相信你会在.Net中找到有用的东西。 .Net需要运行时来执行,而不是本机编译到平台。但是,软件开发更容易,因为API更高级别。
C#是Windows特定编程的推荐语言,特别是.Net。并不是说它是唯一的语言,你也可以使用C / C ++,但微软并不积极支持它们。例如,如果您使用C#,只需点击几下鼠标即可创建GUI应用程序。使用C ++,您需要管理Windows实例。
通常情况下,如果您正在进行跨平台编程或某些低级别的操作,则只能使用C / C ++进行Windows编程。