
Is MFC40.dll required for THREED32.OCX?
Quote:
>Nonetheless, you're still using the control. If it was written using
>MFC and is dependent on some of the functions in the MFC DLL, you need
>to include it in your distribution. Of course, this is just theory.
Here are the DLL'd that Threed32.OCX is dependant on:
MFC40.DLL MSVCRT40.dll KERNEL32.dll
USER32.dll GDI32.dll ADVAPI32.dll
OLE32.dll OLEAUT32.dll
Of these USER32, OLE32, GDI32, KERNEL32,ADVAPI32 are part of the NT/win95 OS and do not need to be shipped with VB4.0 (32)
appications
Here is some more info about DLL dependancies from Symantic C++ 7.2 (an OCX is a DLL with and OLE 2.x wrapper)
If both a DLL and an application want to use MFC, then they will both have a copy of the MFC library statically linked into
them. In fact, the versions of the libraries will be different. The application uses one of the standard versions of the MFC
library (depending on the memory model, say 'mafxcw.lib'), while the DLL uses a special version of the MFC ('lafxdwd.lib').
This has several advantages:
the application using the DLL does not have to use MFC or, for that matter, it does not have to be a Visual C++
application.
the memory model of the application can be different from the DLL. For example, MFC user DLLs (_USRDLL) are large model,
but the application using the DLL can be medium model.
the size of the DLL depends only on those MFC and C runtime routines that are used and linked by the linker. Therefore, the
size of a _USRDLL version DLL is only slightly bigger than the exact same code in a large model application.
there are no problems with classes changing underneath you. Your DLL design exports only those interfaces you wish it to.
if both DLL and application use MFC, there are no problems with the application wanting a different version of MFC than the
DLL (or vice versa). Since the MFC library is statically linked into each DLL or EXE, there is no question about which
version you have.