Generating a Proxy DLL and a Type Library from a Single IDL File
You can use a single IDL file to generate both the proxy stubs and header files for marshaling code, and a type library. You do this by defining an interface outside the library block and then referencing that interface from inside the library block, as shown in this example:
//file: AllKnown.idl
[
object, uuid(. . .), <other interface attributes>
]
interface IKnown : IUnknown
{
import "unknwn.idl";
<declarations, etc. for IKnown interface go here>
};
[
<library attributes>
]
library KnownLibrary
{
//reference interface IKnown:
interface IKnown;
//or create a new class:
[
<coclass attributes>
]
coclass KnowMore
{
interface IKnown;
};
};
For more information, see Marshaling OLE Data Types and Additional Files Required To Generate a Type Library.