ssll 0.5.0

Simple shared library load (betterC compatible)

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

Simple shared library load

Want use shared library in D code, but don't have binding? You can easily write it yourself with ssll!


module mysharedlib;

import ssll;

mixin SSLL_INIT; // define function pointers and loadApiSymbols function

// define possible names of lib
enum libNames = [ "", "", "", ];

// pointer to library
private LibHandler lib;

void initMySharedLib()
    // mysharedlib is already inited;
    if (lib !is null) return;

    // try load every possible library name
    foreach (name; libNames)
        lib = loadLibrary(name); // ssll call
        if (lib !is null) break;

    if (lib is null) assert(0, "failed to load mysharedlib");
    // ssll call: load symbols from shared library to functions pointers
    // assert if can't load symbol

    mysharedlib_init(); // some init function from mysharedlib

void cleanupMySharedLib()
    mysharedlib_cleanup(); // some cleanup from mysharedlib
    unloadLibrary(lib); // ssll call: close lib and set pointer null

  place to define or import types

/+ define all needed functions
    "lib" is name of library pointer
    Linkage.c is linkage of pointer for loading functions addresses
@api("lib", Linkage.c)
    // name of functions must match exactly with function in library
    void mysharedlib_init() { mixin(SSLL_CALL); }
    void mysharedlib_cleanup() { mixin(SSLL_CALL); }

    // you must specify names of function parameters because they used in SSLL_CALL
    float mysharedlib_somefunc(int a, float b) { mixin(SSLL_CALL); }

SSLL is compatible with -betterC

See example

Real examples:


  • bindbc -- from Derelict creators (betterC compatible)
  • dynamic -- suitable for existing bindings
  • deviator
0.5.0 2020-May-23
0.4.0 2019-Aug-31
0.3.0 2019-Jul-25
0.2.0 2019-Jul-24
0.1.0 2019-May-05
Show all 6 versions
Download Stats:
  • 0 downloads today

  • 3 downloads this week

  • 20 downloads this month

  • 1412 downloads total

Short URL: