DLL Hell
DLL Hell is the common term for Dynamic Link Library load failures / external or type library resolution errors. In the context of this document and Beta 1 of the application we are referring to ActiveX or OLE DLLs only (including OCXs). ActiveX dlls use the system registry to store interface and location information about the DLL. This information is placed into the registry by an application such as regsvr32 or an application capable of loading the DLL and calling the DllRegisterServer function. Not all ActiveX dlls supply this function. Those that do can be identified by the OLESelfRegister category being present in the file version properties. Others may require special installation software.

There are four common causes for load failures.
1 An ‘older’ DLL was installed onto and registered with system.
2 Your DLL was unregistered and not replaced.
3 Your DLL file was renamed, moved or deleted.
4 A replacement DLL has broken binary compatibility.

ActiveX controls (still dlls / ocxs) are very prone to failure if member types or attributes are changed. If the new interface structure does not at least match the old then you will receive the ‘...no object in this control...’ message when attempting to work with the form. This usually occurs when the library developer changes a property from say a variant to integer or alters the ‘default’ property of a control etc. This is understandable when you consider the effect of changing the data type of an argument or function in Access and seeing what happen to your code during compilation.A good rule of thumb is to only use your own controls (if able) , or those that are unlikely to be released with changes to existing interface members ie from reputable developers.

For further information on dll version problems see...
Implementing Side-by-Side Component Sharing in Applications (Expanded)
David D'Souza, BJ Whalen, and Peter Wilson
Microsoft Corporation

The End of DLL Hell
Rick Anderson
Microsoft Corporation

The Microsoft DLL Help Database

If you do write COM DLLs / OCXs - then after initial project development is over ...Set the project to Binary compatibility ... and don’t break it once it's in the wild.