using ocx without typelib

i am trying to make several ocx with common interface - like all ocx have
methods Init(), DeInit(), etc...  i will then use these ocx's in a
controller.  how do i call Init, etc... from the controller without using
type library?  all the controller knows are the ProgID from the windows
registry.  i cannot use type library because theoretically the controller is
supposed to use indefinite number of ocx's that implement a common set of
methods - thus i cannot link all type libraries.

i have tried using CreateOleObject, assigned the returned obj to a variant.
i used this to call QueryInterface to get a pointer to IDispatch.  i used
the pointer to IDispatch to get the dispatch id of 'Init' and used this id
to call Invoke.  but i get 'unknown name' error.  is there something i'm
missing here?  i looked at the type library and 'Init' is defined.  the ocx
is also registered.

thanks for your time...