MFC和SDK,API,DLL的关系

      SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。

—————————————————————————————————————————————————————————

       注:1. Windows SDK 是用来支持32位和64位Windows平台以及.NET框架编程模型的开发包。Windows SDK这个名字从

                   Windows Vista开始使用,它包含以前Platform SDK中的所有内容,同时包含.NET框架的内容;

               2. Platform SDK(简写作PSDK) 是在Windows Vista之前的Windows操作系统开发包。PSDK不包含任何.NET框架编程

                   模型的内容。现在,Windows SDK已经取代了PSDK。PSDK不会再有更新版本发布,尽管一些PSDK仍然可以在微软的

                   网站上下载到,或者通过CD/DVD的形式从http: //www.qmedia.ca/launch/psdk.htm订购到。

—————————————————————————————————————————————————————————

        其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。

        首先要接触的是“API”,也就是 Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。其实早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能。而在 Windows 中,系统 API 是以函数调用的方式提供的。可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。

        DLL,即 Dynamic Link Library(动态链接库)。我们经常会看到一些 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll,注:Windows 1.0到Windows 3.1的16位版本的Windows中,动态链接库是以.EXE后缀命名的),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,我们必须要有 API 函数的声明(.H)和其导入库(.LIB),函数的原型声明不难理解,那么导入库又是做什么用的呢?我们暂时先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。

—————————————————————————————————————————————————————————

注:1. lib有静态lib和动态lib之分,lib文件通过编译才可以使用;

        2. 静态编译:静态lib将导出声明和实现放在lib中,编译后所有代码都嵌入到宿主程序

            动态编译:动态lib相当于一个h文件,是对实现部分(.dll文件)导出部分的声明,编译后只是将导出声明部分编译到宿主程序

           中,运行时需要相应的.dll文件支持;

        3. lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了;如果要使动态连接的程序运行起来,有.dll 

            就够了;

        4. 加载方法:

             直接加入:在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对 

                                 话框中选中要加入DLL的LIB文件即可。

             设置:打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中输入DLL的LIB文件

             程序代码:略。

—————————————————————————————————————————————————————————

        所以,为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。到此为止,我们才真正的解释清楚了 SDK 的含义。

—————————————————————————————————————————————————————————

        由于 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数。

 ————————————————————————————————————————————————————————————————————————————


说说MFC

       用VC编写Windows程序有两种:1. Windows 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值