Re: idl and multiple components
bob <bmoorman@eircom.net> wrote:
I hope someone can help with this one.
I have multiple components A (utitlity dll), B (utitlity dll) and S
(server exe).
A.idl defines IA and typelib with coclass A.
B.idl defines IB and typelib with coclass B. In the interface IB I
have a method which uses IA,
i.e. methodB([in] IA *pVal). To be able to use IA I import A.idl into
B.idl.
Nothing special here. But then I #import "A.tlb" (in StdAfx.h) to use
the A component wrapped in smartpointer inside the B component.
First question now is: What is the proper way to do this? I can use
import inside the Library brackets of the B.idl? Or does it go at the
top. The difference is that the generated B.h tries to #include A.h
when I do it the latter way. Do I need to use importlib?
The correct way is as follows:
- import "A.idl" goes at the top of B.idl outside the library block
(normally you already have a few import statements there, add another
one).
- importlib("A.tlb") should be at the top of library block in B.idl
(again, add right below other importlib statements you should already
have).
- in your header, #import "A.tlb" right before you #import "B.tlb" .
Or, don't use #import and instead include A.h and B.h generated by MIDL.
I believe the latter approach is best if you need to implement these
interfaces, not just use them.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925