From: root AT jacob DOT remcomp DOT fr (root) Subject: Dll initializing 30 Jan 1998 18:43:07 -0800 Message-ID: Content-Type: text To: gnu-win32 AT cygnus DOT com > > The reason for this is that cygwin.dll is not initialised. In a cygnus > gnu-win32 compiled application this is done by the C runtime startup code. > I started looking at the dll_crt0_1 routine in the > winsup source of the latest Coolview. > dll_crt0_1 is the part of the runtime startup done in cygwin.dll. > A lot of things are done there: initialisation of heap > (needed by malloc() and friends), initialisation of file I/O (connecting > to Win32 filemap), etc. All these inits are not done in our scenario. > It is a pity that all these init routines are not in the exported > interface of cygwin.dll, so I do not know (yet) how to do them from > our sample.dll. > All dlls in win32 will be called with an argument indicating that they are being called for a process, for a thread, for thread termination and for process termination. I wouldn't believe that the guys in cygnus were so ignorant, so I suppose the error is elsewhere. What makes me suspicious is that you say the C runtime calls the dll. In that case the solution is very simple: When win32 calls the dll (before your program even runs and is loaded) just call the initialization functions. Then cygwin will work without any problems. Do per thread initialization when win32 tells you that a thread is starting, and per process init, when a process is started. But this i *SO* basic stuff (many books explain this in great detail!) that I believe the error must be somewhere else... Generating dlls is a tricky stuff. I did it for lcc-win32 and you get horrible complications because (precisely) of this: my first versions had the same problem like cygnus now, till I discovered that I couldn't let the user write the real LibMain, but *I* had to generate a default LibMain that would make the initialization of my C runtime and *then* call the user's LibMain with the same arguments I received... Kind of tricky specially when you consider that the user also can have a LibMain... That part of my linker was real difficult. -- Jacob Navia Logiciels/Informatique 41 rue Maurice Ravel Tel 01 48.23.51.44 93430 Villetaneuse Fax 01 48.23.95.39 France - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".