Ubuntu dmd 2.065 amd64 linkage problem.

Carl Sturtivant sturtivant at gmail.com
Tue Mar 18 11:28:50 PDT 2014


> I can now confirm that the part of the document
> http://dlang.org/dll-linux.html
> about loading D dynamic libraries from a D main program is 
> experimentally apparently correct with a real world largish 
> executable.
>
> The machinery to initialize the runtime in the dynamic library 
> in
> http://stackoverflow.com/questions/9759880/automatically-executed-functions-when-loading-shared-libraries
> is apparently unnecessary in this case, though I have seen some 
> hints it may be necessary when having a C main program load a D 
> dynamic library.
>
> If you want a D dynamic library to call-back functions in the D 
> main program that loaded it, you may need to supply the linker 
> with the -export-dynamic flag (on the dmd command line with 
> -L-export-dynamic ) so as to expose symbols in the main program 
> for automatic linkage to the dynamic library at the point it is 
> loaded. This worked nicely for me.

On Ubuntu amd64 I found that no special build of a C client that 
loads a D dynamic library using dlopen (etc) is necessary for 
callback linkage from the library to the client. So 
-export-dynamic is unnecessary! However, the machinery mentioned 
here
http://stackoverflow.com/questions/9759880/automatically-executed-functions-when-loading-shared-libraries
IS necessary so that the runtime in the dynamic library is 
initialized when it is loaded.


More information about the Digitalmars-d-learn mailing list