rhoda@mercury.sybase.com (12/13/89)
There are essentially 2 types of DLLs:
1. stand-alone DLLs (Microsoft term)
these are linked with LLIBCDLL.LIB & DOSCALLS.LIB
the DLL has the C run-time code linked into it
2. C run-time DLLs and associated DLLs and programs
termed private C run-time DLLs by Microsoft
a C run-time DLL (CRT DLL) is made by linking CRTLIB.OBJ
& CDLLOBJS.LIB & DOSCALLS.LIB
a CRT DLL can contain all or some of the C run-time
functions
a CRT DLL can also contain custom init/termination code
or it can use the default code
an associated DLL is made by linking CRTDLL.OBJ & the
import lib of the CRT DLL & DOSCALLS.LIB
an assocated program (.exe) is made by linking CRTEXE.OBJ
& the import lib of the CRT DLL & DOSCALLS.LIB
Notice how the 2. says "C run-time DLLs and *associated* DLLs and programs".
That is how the documentation speaks of them. Sort of a unit. Here are
a couple of quotes from the doc.
"A private C run-time DLL must be closely tied to its programs and
associated DLLs."
"Processes and DLLs that share a private run-time DLL share environment
strings and global C run-time data (for example, file pointers for
buffered I/O and memory allocated with the malloc function). Therefore,
the program and the DLLs must cooperate on the use of this data."
*QUESTION*
Let's say one makes a *generic* C run-time DLL. This generic CRT DLL
would include all the C run-time functions (use CDLLOBJS.DEF to get
them all) and would not have any custom init or termination code.
WHY WOULD THIS GENERIC CRT DLL HAVE TO BE TIED TO ANY OTHER DLL OR ANY
PROGRAM?
Apparently, I'm missing something. I think what I'm missing has to do
with the 2nd quote. I don't fully understand the 'whys' of that quote.
Thanks for any help,
----------------------------------------------------------------------
Rhoda Neimand [I speak for myself]
{sun,lll-tis,pyramid,pacbell}!sybase!rhoda -or- rhoda@sybase.com
"I didn't want to, Jim" Mr. Spock in _This Side Of Paradise_
----------------------------------------------------------------------