All pastes #169305 Raw Edit

line

public text v1 · immutable
·published 2006-09-13 20:04 UTC
rendered paste body
module stdloader;

version (Win32) {
  import std.c.windows.windows;
  char[] DynamicLibraryExtension=".dll";
  struct LibraryHandle {
    private void *handle;
    void *getFunction(char[] name) {
      return GetProcAddress(cast(HANDLE)handle, name~cast(char)0);
    }
    void close() {
      FreeLibrary(cast(HANDLE)handle);
    }
    bool isOpen() { return (handle !is null); }
    static LibraryHandle opCall(char[] filename) {
      LibraryHandle e;
      e.handle=LoadLibraryA(filename~cast(char)0);
      return e;
    }
  }
}
else {
  import std.c.linux.linux;
  char[] DynamicLibraryExtension=".so";
  struct LibraryHandle {
    private void *handle;
    void *getFunction(char[] name) {
      return dlsym(handle, name~cast(char)0);
    }
    void close() {
      dlclose(handle);
    }
    bool isOpen() { return (handle !is null); }
    static LibraryHandle opCall(char[] filename) {
      LibraryHandle e;
      e.handle=dlopen(filename~cast(char)0, RTLD_NOW);
      if (e.handle is null) e.handle=dlopen("./"~filename~cast(char)0, RTLD_NOW);
      return e;
    }
  }
}