Linking problem in projects with multiple derived interfaces



I have a problem and I wonder, whether it's an error, or not. Surely it's very inconvenient for me.

Suppose we have three idl's in the same directory: file1.idl, file2.idl and file3.idl.

file1.idl:
--------------------------
module A {
  interface Base {
  };
};
--------------------------

file2.idl
--------------------------
#include <file1.idl>
module A {
  interface FirstDerived : A::Base {
  };
};
--------------------------

file3.idl
--------------------------
#include <file1.idl>
module A {
  interface SecondDerived : A::Base {
  };
};
--------------------------

Compile them and try to link generated eg. stub files against a project, which is using both SecondDerived and FirstDerived interfaces. Linker complains, that
there are two implementations of interface Base stub structures and functions.
It happens so, because orbit-idl compiler generates code for all interfaces contained in idl's #included from our idl (in my example in file file2-stub.c and file3-stub.c you can find code for interface Base - related structures and functions).

Why compiler doesn't generate code only for interfaces from compiled file with #include for header of #included idl file?

Best regards,
Kuba


-- 
 




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]