5

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

4

3 回答 3

8

ODL 是一种传统格式。它已被 MIDL(又名:IDL)取代。查看这篇微软官方文章:MIDL 和 ODL

Microsoft 接口定义语言 (MIDL) 现在包括完整的对象定义语言 (ODL) 语法。

现在,如果您有 ODL 文件,您可以保持原样,或者将它们迁移到 IDL。这将是推荐的解决方案,但它可能容易出错。它与您目前用来从中构建生成文件的工具 MIDL.exe 或 MkTypeLib.exe 非常相关。再次检查有关这些的官方文档:MIDL 和 MkTypLib 之间的差异

通常,您会希望在 IDL 文件中使用 MIDL 语法。但是,如果您需要编译现有的 ODL 文件,或以其他方式保持与 MkTypLib 的兼容性,请使用 /mktyplib203 MIDL 编译器选项强制 MIDL 的行为类似于 Mkktyplib.exe,版本 2.03。(这是 MkTypLib 工具的最后一个版本。)具体来说,/mktyplib203 选项解决了这些差异:

于 2013-05-15T09:30:44.360 回答
2

ODL 是Object Description Language的首字母缩写, IDL 是Interface Definition Language

对象描述语言(ODL) 是 Microsoft 创建的原始接口定义语言,用于指定要在 OLE 自动化中使用的接口。它是 OMG IDL 的超集

如果您想描述对象,也许 ODL 是一个更好的工具,由您来设计面向对象或面向接口(功能)的应用程序。

于 2013-05-15T09:03:09.743 回答
0

odl 文件通常使用 Mktyplib.exe 解析,而 idl 使用 MIDL 编译器解析。但是,截至 2018 年 5 月,MIDL 现在还包括 ODL 的完整语法,即 MIDL 编译器可以解析 2 个输入文件中的任何一个:idl 或 odl。

于 2018-11-05T20:15:00.893 回答