C++ idl和odl之间的区别

C++ idl和odl之间的区别,c++,com,idl,C++,Com,Idl,IDL和ODL的主要区别是什么。我有很多项目,其中一些有idl,一些有odl。我应该在哪里使用它们。什么是权衡 ODL是对象描述语言的缩写,IDL是接口定义语言 (ODL)是Microsoft为指定接口而创建的原始版本 可用于OLE自动化。这是OMG IDL的超集 如果您想描述对象,显然ODL是一种更好的工具,那么您可以自行设计面向对象或面向接口(功能)的应用程序。ODL是一种传统格式。它被MIDL(也称为IDL)取代。查看此Microsoft官方文章: Microsoft界面定义语言(MIDL

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

ODL是对象描述语言的缩写,IDL是接口定义语言

(ODL)是Microsoft为指定接口而创建的原始版本 可用于OLE自动化。这是OMG IDL的超集


如果您想描述对象,显然ODL是一种更好的工具,那么您可以自行设计面向对象或面向接口(功能)的应用程序。

ODL是一种传统格式。它被MIDL(也称为IDL)取代。查看此Microsoft官方文章:

Microsoft界面定义语言(MIDL)现在包括 完整的对象定义语言(ODL)语法

现在,如果您有ODL文件,您可以保持原样,或者将它们迁移到IDL中。这将是推荐的解决方案,但可能容易出错。它与当前用于从中生成文件的工具MIDL.exe或MkTypeLib.exe密切相关。再次查看有关以下内容的官方文件:

通常,您希望在IDL文件中使用MIDL语法。 但是,如果您需要编译现有的ODL文件,或者 要保持与MkTypLib的兼容性,请使用/mktyplib203 MIDL 强制MIDL像Mkktyplib.exe一样运行的编译器选项,版本 2.03. (这是MkTypLib工具的最新版本。)具体而言,/mktyplib203选项解决了这些差异:


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

你有没有试过看看这些首字母缩略词扩展到了什么地方?我有,但我对COM的理解非常薄弱。所以我不能澄清事情。