idl和odl之间的区别

时间:2013-05-15 08:51:04

标签: c++ com idl

IDL和ODL的主要区别是什么。我有很多项目,其中一些有idl,其中一些有odl。我应该在哪里使用它们。什么是权衡。

3 个答案:

答案 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。