扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
接下来,让我们来解释两个同样常见的词:
前文我们已经解释了二次开发接口(API),它是应用程序用来向外部程序(或插件)提供服务的。我们理一下思路:
清楚了这些,剩下来的问题是:既然应用程序API是接口,是一种二进制协议,那么,第三方如何知道应用程序提供的接口是什么样子的呢?这就是本文要回答的内容。
每一种语言的模块,为了可以被用来提供给其他模块调用,都有自己固有的习惯。例如,C/C++程序员很习惯对外提供一个.dll/.so,外加一个.h文件对接口进行描述(有时还会带上一个.lib文件,不过这里我们假设.dll总是提供了标准的COM组件,那么.lib是不需要的)。
为了是的应用程序提供的接口可以让更多人可以使用,为了使任意语言的程序员能彼此理解对方,理解对方的API接口(DOM模型的对象树),就需要有统一的规范。我们需要借助一种中间语言对接口进行描述,这就是接口描述语言(IDL)的由来。
那么类型库(TypeLib)又是什么呢?有人说,类型库(TypeLib)是IDL编译后的结果,IDL是基于纯文本的,可以方便人们阅读,而类型库(TypeLib)是二进制的,方便机器处理。
这么说当然没有错。但是并没有解释类型库(TypeLib)存在的价值。
我个人认为,类型库(TypeLib)最重要的作用是充当了元信息(Meta)的作用,你可以认为这是一种规范化的RTTI。从此意义上来讲,我们不难明白,为什么MS认为.NET是COM的延续 —— 类型库(TypeLib)所能够描述的元信息(Meta)仍然不够丰富,语言之间的壁垒仍然存在。
类型库(TypeLib)的主要作用在于:
相信你已经很清楚IDL和TypeLib这两个重要概念了。我这里提供一个CodeGuru(这里作了修正。抱歉,我记忆成CodeProject了)上的一个例程结束本文。该程序枚举类型库(TypeLib)中的信息,并将其打印出来,略微改变一下,应该可以做出一个实际可用的应用程序。相信有人需要,希望对你有帮助。到这里下载:TypeLibEnum.rar。
补充:如果你只是要查看类型库(TypeLib)——事实上,多数人属于这种情况,而不是编程对它进行操作,那么你可以:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者