IDL和ODL的主要区别是什么。我有很多项目,其中一些有idl,其中一些有odl。我应该在哪里使用它们。什么是权衡。
答案 0 :(得分:8)
ODL是一种传统格式。它已被MIDL取代(a.k.a:IDL)。查看Microsoft官方文章:MIDL and ODL
Microsoft接口定义语言(MIDL)现在包括 完整的对象定义语言(ODL)语法。
现在,如果你有ODL文件,你可以保持原样,或者将它们迁移到IDL。这将是推荐的解决方案,但它可能容易出错。它与您用于从中构建生成的文件,MIDL.exe或MkTypeLib.exe的工具非常相关。再次查看有关这些的官方文档:Differences Between MIDL and MkTypLib
通常,您需要在IDL文件中使用MIDL语法。 但是,如果您需要编译现有的ODL文件,或者其他 保持与MkTypLib的兼容性,使用/ mktyplib203 MIDL 编译器选项强制MIDL的行为类似于Mkktyplib.exe,版本 2.03。 (这是MkTypLib工具的最后一个版本。)具体来说,/ mktyplib203选项解决了这些差异:
答案 1 :(得分:2)
ODL是对象描述语言的首字母缩写,IDL是接口定义语言。
Object Description Language(ODL)是Microsoft创建的用于指定接口的原始interface definition language 用于OLE自动化。它是OMG IDL的超集
如果你想要描述对象,显然ODL是一个更好的工具,你可以自己设计面向应用程序对象或面向接口(功能)。
答案 2 :(得分:0)
通常使用Mktyplib.exe解析odl文件,而使用MIDL编译器解析idl。但是,从2018年5月开始,MIDL现在还包括ODL的完整语法,即MIDL编译器可以解析2个输入文件中的任何一个:idl或odl。