SDK是软件开发包,如果你要在你的程序中使用别人做的一个模块,就需要别人提供给你SDK
API是应用程序接口,如果你要在别人的平台上编一个程序,就需要使用别人提供给你API
它们的差别在于层次不同,SDK是你的程序使用别人的一个模块,主导权在于你,API是你在别人的平台上做一个程序,主导权在于别人至于dll,如果你要使用别人开发的一些功能,对方又不想给你提供源代码,就可以把这些功能打包提供给你,在windows上,这些功能代码就放在一些dll文件里
也就是说,在windows上,不管是sdk还是api,提供给你的功能都是放在dll文件里的,而在linux等其他操作系统中,dll文件什么用也没有

解决方案 »

  1.   

    api是函数,比如我们messagebox,它就是一条API。sdk从广义上讲应该是一整个软件开发过程中所用到的开发包,它不仅仅包含API,还有诸如API对应的文档也应该属于。dll与前两者不是一个概念,它是最终生成的产物,就如exe一般,但是区别在于dll可以导出API供其他人调用,因此DLL属于某个SDK的一部分。
      

  2.   

    SDK(软件开发包) = API 声明(.h) + 库(.dll/.lib)+ 文档 + 示例等。比如你开发 Windows 的程序,就需要 Windows SDK。Windows SDK 包括 Windows 系统提供的接口或者说系统提供的函数也可以说 Windows API,链接库,示例文档等。或者别人给你一套他自己写好的库、头文件也可以称作为 SDK。API 即应用程序接口。说白了就是别人写好一套函数,函数的声明通常包含在 SDK 的头文件中。编译时还有可能需要链接到 SDK 中提供的库文件。就像你在 C 语言里写函数一样,不同的是 API 通常是对外开放供别人使用的函数,跟普通的函数没什么区别。DLL 即动态链接库。别人写的好的东西比如 SDK,通常除了头文件之外还有库。库分为动态库和静态库。动态库就是编译好的 dll 文件,当你的程序使用 h 文件中的声明和 lib 提供的符号表链接到(使用)别人的 dll 中的函数,则必须要连带第三方 dll 同时发布才能使用。因为你的程序运行时要调用这个 dll 中的函数,所以叫动态库。如果是静态库,则实际的代码会编译时直接编译到你的程序中,编译成功后不再需要它即可独立运行,所以叫静态库。
      

  3.   

    linux有 .so 共享文件。也是一种动态库。
    名字不同,内部实现有所不同,所以不能互操作。