关于这两个概念,每次我看见都会一丝迷糊,我这样不写程序的人,不常用它们,但是记下来吧,免得下次又google:
SDK
SDK,Software Development Kit 的缩写,中文意思“软件开发工具包”,通用点理解:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。那么在编程开发中具体指什么呢?这里涉及到API和动态链接库的概念。
API,Application Programming Interface,是操作系统提供给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令,在 Windows 中,系统 API 是以函数调用的方式提供的。比如取得操作系统的版本号,要做的就是调用 GetVersionEx() 函数,不用具体关注这个函数如何实现。那么如何调用这些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 应用程序所需的相关文件、范例和工具的“工具包”。
DDK/WDK
DDK,Device Development Kit的缩写,设备开发工具包的意思,vista之后已经升级更名为WDK(Windows Driver Kit),与SDK用意一致,只不过wdk是针对内核驱动程序的开发,而sdk是针对上层应用程序的开发。