我尝试使用最新版本的 TAO IDL Compiler(已发布的软件包版本 6.0.2)从 Rhapsody 7.1.1 编译生成的 IDL 文件,但由于 CORBA 3.1 中不推荐使用匿名类型,因此出现了一些错误。
可以使用 TAO IDL 编译器“-as”选项抑制此类错误。但是,出于维护原因,我想生成兼容的 IDL 文件。
此外,我从与接口转发相关的 TAO IDL 编译器中得到其他错误。这生成的 IDL 文件可以正确编译,直到 TAO 版本 5.7.9 (1.7.9)。
编辑:
接口转发的主要问题是已经定义的接口的转发隐藏了该接口的内容。
例子:
idl
interface A {
typedef long my_long_type;
};
B.idl
#include "A.idl"
interface A;
interface B {
typedef A::my_long_type my_b_long; // Error with TAO versions greater than 5.7.9
};
如果我删除 A 的前向没有问题,但我不能因为 IDL 文件是由 Rhapsody 通过这种方式生成的。