|
|
|
|
|
|
|
|
|
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 http://msdn2.microsoft.com/en-us/library/ms811700.aspx |
|
|
|
The End of DLL Hell Rick Anderson Microsoft Corporation http://msdn2.microsoft.com/en-us/library/ms811694.aspx
|
|
|
|
The Microsoft DLL Help
Database http://support.microsoft.com/dllhelp/ |
|
|
|
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.
|