It depends of your interface definition file. If you use custom marshalling , the midl compiler will generate three files , which must be compiled in a dll. ( exp : from test.idl will generate test_i.c , test_p.c, and dlldata.c ). If the interface marshaller will be used only under WinNT.3.51 or w95, you should define in the dlldata.c the REGISTER_PROXY_DLL symbol. The generated .dll fully support automatic registration. If you don't want to use custom marshalling, you can use the universal marshaler, by adding oleautomation attribute to your interface ( if your interface use only data types supported by variants).