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; } } }