Thread overview
Dynamically Loading a D DLL From a D Program
Dec 14, 2016
Benjiro
Dec 15, 2016
Nicholas Wilson
Dec 15, 2016
Guillaume Piolat
December 14, 2016
Silly question: In this post about static / dynamic loading, i noticed that it uses the dlopen/dlclose, while there is a core.runtime for handling the loading.

http://dlang.org/dll-linux.html#dso9

Dynamically Loading a D DLL From a D Program

>  void* lh = dlopen("libdll.so", RTLD_LAZY);
>
>  // Do Stuff
>
>  dlclose(lh);

Is it not better to use:

> import core.runtime : Runtime;
>
> void* lib = Runtime.loadLibrary(fileName);
> 
> // Do Stuff
>
>  Runtime.unloadLibrary(lib);

Is there also any information regarding d classes loading instead of functions?

It also seems that the core runtime is incomplete with basic loading but no handling of dlsym, so your still forced to use the basic c conversion casting.

> int function() fn = cast(int function())dlsym(lib, libFunction);
> fn();
December 15, 2016
On Wednesday, 14 December 2016 at 21:38:27 UTC, Benjiro wrote:
> Silly question: In this post about static / dynamic loading, i noticed that it uses the dlopen/dlclose, while there is a core.runtime for handling the loading.
>
> http://dlang.org/dll-linux.html#dso9
>
> Dynamically Loading a D DLL From a D Program
>
>>  [...]
>
> Is it not better to use:
>
>>  [...]
>
> Is there also any information regarding d classes loading instead of functions?
>
> It also seems that the core runtime is incomplete with basic loading but no handling of dlsym, so your still forced to use the basic c conversion casting.
>
>> [...]

There is also derelict shared lib loader in derelict-util in dub.
December 15, 2016
On Wednesday, 14 December 2016 at 21:38:27 UTC, Benjiro wrote:
> It also seems that the core runtime is incomplete with basic loading but no handling of dlsym, so your still forced to use the basic c conversion casting.
>
>> int function() fn = cast(int function())dlsym(lib, libFunction);
>> fn();

You can use the derelict-util library to load a dynlib portably.

https://github.com/DerelictOrg/DerelictUtil/blob/2de2a9b63f8cdfbd8270afa8a4dc28f4ffaa868c/source/derelict/util/sharedlib.d#L110