You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by George Carrette <Ge...@iacnet.com> on 1997/07/02 18:13:16 UTC

Re: Modules as windows DLLs

Using shared libraries under Unix is different from say Windows or VMS
for example. In those environments what you usually do is
to put all the entry points required by dynamically linked modules
into one big shared library, LIBAPACHE.DLL, and to link both your vestigial 
main.o
against that library and to link all dynamically linked modules against it.

main.c contains now only: main(int argc,char 
**argv){return(apache_main(argc,argv);}

If you want an example of a system that does this using VC++ 
you could look at http://people.delphi.com/gjc/siod.html and grab
the siod.zip or siod.tgz, either of which contains makefiles for VC++,
Unix, and VMS.

Of course making LIBAPACHE.DLL will require a LIBAPACHE.DEF file
which declares each and every single external call needed by loadable modules.
How to generate this list? Ideally automatically from the properly
maintained public .h files and the api documentation!
Otherwise, by hand as usual.

Now I'm not saying this is absolutely the only way to do things, but it is
certainly the recommended way, and the most straightforward way.

The same thing can be done in Unix enviroments too, and could even give
increased efficiency under say OSF/1 or other 64 bit RISC machines when 
the linker is directed to build shared libraries for certain specific target 
addresses
as a prefered runtime location.

If you need any more help just send me email directly.