Hi All,

In my opinion TLBIMP procuces incorrect code for the follwing IDL. It
replaces interfaces from the IDL by the generated classinterface:

    interface INetTestB : IDispatch
    {
        STDM Doit (void);
    };

    interface INetTestA : IDispatch
    {
        STDM Doit ([in]INetTestB *a);
    };

    coclass NetTestB
    {
        [default] interface INetTestB;
    };
    coclass NetTestA
    {
        [default] interface INetTestA;
    };

The produced interop has the following for the INetTestA::Doit
[ComImport, TypeLibType((short) 0x1000),
Guid("515E402D-7ECB-11DA-BCBE-00065B03E1F4")]
public interface INetTestA
{
      [MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
      void Doit([In, MarshalAs(UnmanagedType.Interface)] NetTestB a);
}


Note that it changed the INetTestB into a new introduced NetTestB class.
I know that tlbimp produces a classinterface too (how can I get rid of that?
the /noclassmembers switch does nothing), but replacing IDL-interfaces by
the generated classinterface is not correct in my opinion.

Any comments?

Kind regards,
Peter

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to