ssll 0.2.0
Simple shared library load
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
!
Example:
module mysharedlib;
import ssll;
import std.exception : enforce;
// define possible names of lib
enum libNames = [ "mysharedlib.so", "mysharedlib.so.0", "mysharedlib.so.0.1", ];
// pointer to library
private __gshared void* 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;
}
enforce(lib, "failed to load mysharedlib");
// ssll call: load symbols from shared library to functions pointers
loadApiSymbols();
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
}
mixin apiSymbols; // ssll call: define function pointers
/+
place to define or import types
+/
// define all needed functions
@api("lib") // "lib" is name of __gshared pointer to library
{
// name of functions must match exactly with function in library
void mysharedlib_init() { mixin(rtlib); /* ssll mixin */ }
void mysharedlib_cleanup() { mixin(rtlib); }
float mysharedlib_somefunc(int a, float b) { mixin(rtlib); }
...
}
Real example:
- Registered by Oleg
- 0.2.0 released 5 years ago
- deviator/ssll
- MIT
- Copyright © 2019, deviator
- Authors:
- Dependencies:
- none
- Versions:
-
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 - Download Stats:
-
-
0 downloads today
-
4 downloads this week
-
18 downloads this month
-
1840 downloads total
-
- Score:
- 1.2
- Short URL:
- ssll.dub.pm