代码之家  ›  专栏  ›  技术社区  ›  M.M

正在编译.ridl文件

  •  1
  • M.M  · 技术社区  · 11 年前

    是否有用于编译 .ridl C++Builder使用的文件,以生成C头?

    据我所知, TLIBIMP 只能从TLB提取RIDL,并从TLB生成C++标头。我看不到从RIDL生成头的选项。

    在.ridl文件上使用Microsoft SDK 7.1的“midl.exe”,我得到了一系列错误:

    .\MyObject.ridl(114) : error MIDL2072 : inapplicable attribute : [version] [ Parameter 'param1' of Procedure 'func1' ( Interface 'IMyObject' ) ]
    

    还有一些好的警告:

    .\MyObject.ridl(343) : warning MIDL2400 : for oleautomation, optional parameters should be VARIANT or VARIANT * : [optional] [ Parameter 'param2' of Procedure 'func2' ( Interface 'IMyObject' ) ]
    

    这是我后来了解到的,但不知道最初定义接口的时间。在C++Builder中定义接口时,最好提供这些警告。

    我猜是这样 .ridl文件 是Embarcadero发明的扩展,以及 [version] 是该扩展名中的标记。错误具体指 version(1.0) 出现在标题中的 enum 这是我定义的。(每次使用枚举作为函数参数都会触发警告)。

    (如果我通过删除多余的内容来修复错误 version 标签,然后它正确地生成头,我可以在用C++Builder构建的C程序中使用它)。

    1 回复  |  直到 11 年前
        1
  •  3
  •   Remy Lebeau    11 年前

    A. RIDL file 仅限Embarcadero编译器。Embarcadero使用RIDL而不是标准IDL,RIDL与MIDL.exe不兼容。

    在2009年之前的版本中,IDE直接编辑TLB文件,然后将其原样链接到可执行文件中。这很容易出错,很难维护和编辑,并且不适合VCS系统。因此创建了RIDL,TLB文件成为项目编译期间动态创建的中间文件,如OBJ和RES文件。

    没有直接从RIDL文件创建C/C++源文件的工具。然而,有一个 GenTLB.exe 工具从RIDL文件创建TLB文件,然后可以使用 TLIBIMP.exe 从TLB文件创建C/C++源文件的工具。

    但是,请注意,TLIBIMP.exe生成的C/C++源文件仅在C++Builder中可用,因为它们依赖于Embarcadero特定的编译器扩展名和RTL头/类型。如果您想将TLB文件与其他编译器一起使用,则必须使用它们自己的TLB导入工具/功能。