Dynamic loading of shared libraries.

Jens Mueller jens.k.mueller at gmx.de
Mon Jun 13 08:33:02 PDT 2011


Andrei Alexandrescu wrote:
> On 6/13/11 4:27 AM, Jens Mueller wrote:
> >Steve Teale wrote:
> >>Can DMD D2/Linux do this yet?
> >
> >dmd can't do it yet. But if all you want is to link a against a shared
> >library you can try the following:
> >
> >1. Create a shared library
> >$ gcc -m64 -fPIC -shared shared.c -o libshared.so
> >
> >2. Building (without linking using dmd)
> >$ dmd -m64 -c dynamic.d -ofdynamic.o
> >
> >3. Use gcc as linker
> >$ gcc -m64 dynamic.o /path/to//libphobos2.a -L. -lshared -lrt -o dynamic
> >
> >4. Execute
> >$ ./dynamic
> >Hello from shared
> >
> >I attached the files shared.c and dynamic.d, if you want to try
> >yourself.
> >
> >Jens
> 
> Jens,
> 
> 
> Two questions - first, what steps do we need to take to convince the
> linker call from within dmd to work as above?

Never thought about that. Just tried.
$ dmd -m64 dynamic.o /path/to/libphobos2.a -L-L. -L-lshared -L-lrt -ofdynamic
works.

> Second, how about the converse - loading a shared library from a
> program written in either C or D?

Don't know exactly what you mean. As far as I know dmd is not able to
generate shared libraries. Is that your question?

Jens


More information about the Digitalmars-d mailing list