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