SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义SDK的一个子集——即开发Windows 平台下的应用程序所使用的SDK。
其实上面只是说了一个SDK大概的概念而已,理解什么是SDK真有这么容易吗?恐怕没这么简单!为了解释什么是SDK我们不得不引入API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。
首先要接触的是“API”,也就是Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作)。其实早在DOS时代就有API的概念,只不过那个时候的API是以中断调用的形式(INT21h)提供的,在DOS下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将AH置为30h后调用INT21h就可以得到DOS操作系统的版本号。而在Windows中,系统API是以函数调用的方式提供的。同样是取得操作系统的版本号,在Windows中你所要做的就是调用GetVersionEx()函数。可以这么说,DOS API是“Thinking in 汇编语言”的,而Windows API则是“Thinking in高级语言”的。DOS API是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表到他们的入口,那么Windows API呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。
DLL(又是一个缩写,感觉IT这个行业里三字头缩写特别多),即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的含义。
由于SDK包含了使用API的必需资料,所以人们也常把仅使用API来编写Windows应用程序的开发方式叫做“SDK编程”。而API和SDK是开发Windows应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如VCL和MFC,虽然他们比起“SDK编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用API函数。
说说SDK
时下学计算机的大多想学编程,且大部分都是在Windows下工作的,而目前学得最热门的是VC,大多数人一开始就开始学习VC,VC是以C++为语言基础的开发工具,而C++是C语言的扩充,故要学好VC最好是先学好C和C++。
用VC编写Windows程序有两种:1.Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等。SDK编程就是直接调用Windows的API进行编程,平时人们常说"用SDK写程序"就是指用Windows的API函数来写程序,API由上千个API函数组成(Win95的API有两千多个)。而MFC是API的封闭,结合面向对象程序设计的继承性和多态
SDK和MFC的区别
SDK就是Software Development Kit软件开发包
MFC就是Microsoft Foundation Classes微软函数类库
MFC是对API函数的封装,也算是vc里的SDK
用VC编写Windows程序有两种:1.Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等。SDK编程就是直接调用Windows的API进行编程,平时人们常说"用SDK写程序"就是指用Windows的API函数来写程序,API由上千个API函数组成(Win95的API有两千多个)。而MFC是API的封闭,结合面向对象程序设计
的继承性和多态性组成一个个的"类",共由一百多个类组成。尽管MFC比SDK方便,但要深入VC,直接去学MFC却是不明智的选择。只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。所以学VC最好是先学用SDK编写程序,在此期间深入掌握Windows
操作系统的工作原理和各API函数的应用,然后再深入MFC.SDK是基于C语言的,而MFC是基于C++的,这是最根本的区别。
WIN32SDK是一套由微软提供的开发Windows应用程序的工具,它包括声明WIN32API 的头文件(例如Windows.h)、用于与Windows系统DLL连接的库、一个C++编译器以及链接器。WIN32SDK可以从微软免费下载,它以工作行方式运行,你需要建立自己的makefile。
MFC是一个C++类库,它封装了很多对WIN32API的调用,同时提供了一个支持
DOC/VIEW的运行框架,使得程序员编写重复的代码。但是无论如何,MFC在底层仍然调用WIN32API来完成工作,MFC提供有全部的源代码,你可以看到MFC的工作过程。基本上你可以认为MFC工作于WIN32SDK之上。在MFC中你仍然可以直接调用WIN32API。MFC主要封装的是界面、文件、WinInet和线程等函数。MFC除了封装API,最重要的是它的体系结构,它所使用的Doc/View结构是SDK中没有的,这种架构是比较特殊的。尽管Doc/View结构不是微软的发明,但它是MFC的特。微软开发Windows时使用的是C 语言,所以最初设计SDK时并没有考虑C++。
pascal语言面向对象吗经典问题:请问sdk与mfc区别有那些,编码时区别又在那里?我有一些个人的认识,长久得不到印证,请指导!对于上述两问题我是这样认识的:1、sdk与mfc的区别在于mfc封装了大部分的api,而sdk只是mfc的一个真子集。2、sdk 与mfc编码时的区别为:SDK编码时,包括程序框架(比如消息处理器、主窗口消息回调函数等)在内的代码全为自己编制,但所利用的API等接口全来自SDK 的头文件和库文件;而mfc系统会生成程序框架,当然接口全来自于mfc。不知我的认识有没有认识不对或不全的地方。
答:说“SDK只是MFC的一个真子集”是错误的,因为有部分API函数MFC没有封装,不过这些函数你在MFC程序中都可以使用。MFC主要封装的是界面、文件、WinInet和线程等函数。SDK是基于C语言的,而MFC是基于C++的,这是最根本的区别。MFC除了封装API,最重要的是它的体系结构,它所使用的
Doc/View结构是SDK中没有的,这种架构是比较特殊的。尽管Doc/View结构不是微软的发明,但它是MFC的特。
问:
"而MFC是基于C++的",我原来以为MFC是VC专用的。在C++Builder里面也可以用MFC库么?如果不能,C++Builder用什么呢?SDK基于C语言,那由什么来基于C++呢?
答:MFC最初是由微软设计,专供VC++用的,但是C++Builder也支持,参见QA001956"如何使C++Builder VCL程序能使用MFC的类"。C++Builder自己也有一个类库,叫VCL。以前的Borland C++使用OWL类库。微软开发Windows时使用的是C语言,所以最初设计SDK时并没有考虑C++。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论