概述

微软每推出一个重要的windows版本,一般都会同时推出一个SDK(Software Development Kit)。SDK包含了开发该windows版本所需的windows函数和常数定义、API函数说明文档、相关工具和示例。SDK一般使用C语言,但不包括 编译器。高版本VC++包括了SDK所有的头文件、帮助、示例和工具,不需要再安装SDK,低版本如VC++5.0则需要安装SDK。从windows 98开始,windows SDK叫Platform SDK(http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en),包含最新的windows API函数的有关声明、例子。
用VC编写windows程序有两种方式:windows c方式(SDK)和 C++方式(对SDK函数进行包装,如VC中的MFC、BCB中的VCL)。 SDK编程就是直接用windows API 进行编程。API由上千个API函数组成(win95中有两千多个),而MFC是API的封装,结合 面向对象的继承、 多态组成一个个类,共有一百多个类组成。
SDK是Software Development Kit的缩写,中文意思是“ 软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类 软件的相关文档、范例和工具的集合都可以叫做“SDK”。 开发 Windows 平台下的 应用程序所使用的 SDK只是广义 SDK 的一个子集。

与SDK相关的几个概念

上面只是说了一个 SDK 大概的概念而已,要理解SDK 不得不引入 API、 动态链接库、 导入库等等概念。
首先要接触的是“ API”,也就是 Application Programming Interface,其实就是 操作系统留给 应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的 应用程序都直接或间接的通过中断调用来使用 操作系统功能,比如将 AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在 Windows 中,系统 API 是以 函数调用的方式提供的。同样是取得 操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过 中断矢量表找到他们的入口。
DLL即 Dynamic Link Library( 动态链接库)。我们经常会看到一些 . dll 格式的文件,这些文件就是 动态链接库文件,其实也是一种可执行 文件格式。跟 .exe 文件不同的是,. dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及 可执行代码等。其实 Windows 的三大模块就是以 DLL 的形式提供的(Kernel32. dll,User32.dll,GDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,我们必须要有 API 函数的声明(.H)和其 导入库(.LIB)。 导入库可以理解为是为了在 DLL 中找到 API 的 入口点而使用的。
所以,为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。
由于 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它 编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数。
时下学计算机的大多想学编程,且大部分都是在Windows下工作的,而目前学得最热门的是VC,大多数人一开始就开始学习VC,VC是以C++为语言基础的开发工具,而C++是C语言的扩充,故要学好VC最好是先学好C和C++。
用VC编写Windows程序有两种:1. Windows c方式(SDK),2. C++方式:即对SDK函数进行包装,如VC的MFC,BCB的VCL等。SDK编程就是直接调用Windows的API进行编程,平时人们常说"用SDK写程序"就是指用Windows的API函数来写程序,API由上千个API函数组成(Win95的API有两千多个)。而MFC是API的封闭,结合 面向对象程序设计的继承性和 多态性组成一个个的"类",共由一百多个类组成。尽管MFC比SDK方便,但要深入VC,直接去学MFC却是不明智的选择。只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。所以学VC最好是先学用SDK编写程序,在此期间掌握Windows 操作系统的工作原理和各API函数的应用,然后再深入MFC。

编程环境

我们仍然用VC6的 IDE( 集成开发环境)来编写SDK程序,启动VC6后选择File菜单的New...选项,在出现的New对话框的Projects标签内选择Win32 Application,然后在Projects Name指定项目的名字,在Location中指定路径后按OK按钮,在出现的对话框中,如果你想要用C语言来写程序可以选择An emtpy project,如果你想创建一个带有WinMain入口函数和普通参数的设定的项目,可以选择A simple Win32 application,如果您想创建一个简单典型的“Hello World!”Win32SDK application 应用程序,可以选择A typical "Hello World!" application。确定项目类型后按Finish完成。
在VC6环境下,你依然可以使用资源 编辑器和ClassWizar等工具完成程序的编写。用SDK编写程序关键是能够了解程序的来龙去脉。如果不了解,当然那样效率会很低,不比VB、PB那么快,任何东西都是有得有失,如你熟悉用SDK写程序后,对MFC会比较容易上手的,关键要熟悉C++的三大特性。

Windows SDK相关推荐

  1. Windows SDK 7.1 (包含directshow)安装配置

    最近一直在做毕业设计的事情,需要利用directshow进行视频开发,但是现在单独的directshow包已经没有了,从directx9.0c开始directshow和directx分开发布,现在的d ...

  2. [转载]Windows SDK笔记

    应程序需求需要重写窗体内子控件某一特定消息,可怜我苦苦找了二天也没找到资料,到CDSN提问也没有得到满意答案. 终归是上天不负有心人啊,终于被我发现了博主的一篇文章,总算是满意的解决问题了:在此感谢作 ...

  3. Windows SDK编程 API入门系列(转)

    之一 -那'烦人'的Windows数据类型 原创文章,转载请注明作者及出处. 首发 http://blog.csdn.net/beyondcode http://www.cnblogs.com/bey ...

  4. MSB8036 The Windows SDK version 10.0 was not found. Install the required version of Windows SDK o

    MSB8036    The Windows SDK version 10.0 was not found. Install the required version of Windows SDK o ...

  5. Visual Studio 2017 、2019安装Windows SDK失败的解决办法(改盘符引起)

    如果是改盘符出错就请往下看,如果不是就别往下看了 这是血泪踩出来的坑,希望有所帮助.我是手残把电脑盘符改了,然后vs就开始疯狂报错,百试无果.百度不出,果断放弃,刚开始是安装的2017,卸载完后安装的 ...

  6. VS2008中配置 Windows SDK v7

    VS2008默认的为Windows SDK6.0A,如果要使用SDK v7的API须配置让VS2008使用SDK v7,否则编译出错这是毫无疑问的. 在网上找了半天没找到,最后发现配置方法超级简单,简 ...

  7. Kinect for Windows SDK发布

    转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/2011/06/17/kinect-for-windows-sdk%e5%8f%91%e5%b8%83/ 前 ...

  8. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-手写数学公式输入...

    搭建好Visual C++2010与windows SDK fo windows7的开发平台以后, 小试牛刀,检验下开发windows7的下的tabletpc应用,这个东西财务记账比较多, 大家先看效 ...

  9. [译]Kinect for Windows SDK开发入门(二):基础知识 上

    上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础. 每一个Kinect应用都有一些基本元素 ...

  10. Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)

    Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO) http://www.microsoft.com/downlo ...

最新文章

  1. 复旦教授发现400+安卓漏洞,最严重可使手机变砖,谷“鸽”16个月后才修复
  2. 8s保留cpu设置_华为Mate 20 Pro的第二彩蛋-开发者人员选项可以这么设置
  3. 3.15计算机网络原理与技术笔记
  4. 《设计模式其实很简单》
  5. fgetc与EOF的错综复杂关系
  6. CoinList将销售价值4000万美元的社交代币RLY
  7. Java占Linux超过xms,linux下分析java程序占用CPU、内存过高
  8. 物理常量/真空电容率/引力常量/真空磁导率/斯特潘-玻尔兹曼常量
  9. android 调出键盘表情_keyboard dialog 仿微博表情键盘输入框,keyboarddialog
  10. SM9学习笔记与图解(合集)
  11. 苹果开发 笔记(69)SVProgressHUD
  12. 球坐标系(Spherical coordinate system )简单总结
  13. Flutter 必备开源项目
  14. postman传数组
  15. InnoDB ReplicaSet
  16. ESP8266之AP模式
  17. mysql驱动的依赖和spring jdbc依赖是什么关系
  18. 这里稍稍记录一下null和undefined
  19. 英美概况复习(内容完善中)
  20. 使用液压机压缩气体的空分装置

热门文章

  1. MySQL 8.0 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  2. 面试题58:javascript中鼠标事件有哪些
  3. GoLang个人小结
  4. python s12
  5. 生日必去揩油的19个地方
  6. 叫我修吧全新升级 品牌售后保障更全
  7. .PHONY与伪目标
  8. MindMeld中文文档--35.与对话管理合作
  9. mutations vuex 调用_vuex 怎么在actions中调用mutations中的函数?
  10. paip.mysql 5.6 数据库 占用 内存 过多 的 解决方案