File SharedLib.c

File List > core > SharedLib.c

Go to the documentation of this file

#include "SharedLib.h"
#include <stdlib.h>
#include <string.h>

#if defined(__linux__)

#include <dlfcn.h>

struct SharedLib
{
    void* handle;
};

struct SharedLib* SharedLib_LoadSharedLib(const char* path)
{
    struct SharedLib* pLib = malloc(sizeof(struct SharedLib));
    memset(pLib, 0, sizeof(struct SharedLib));
    pLib->handle = dlopen(path, 0);
    return pLib;
}

void* SharedLib_GetProc(struct SharedLib* pSharedLib, const char* procName)
{
    return dlsym(pSharedLib->handle, procName);
}


#else if defined(__WIN32__)

#include <windows.h>

struct SharedLib
{
    HMODULE handle;
};

struct SharedLib* SharedLib_LoadSharedLib(const char* path)
{
    struct SharedLib* pLib = malloc(sizeof(struct SharedLib));
    memset(pLib, 0, sizeof(struct SharedLib));
    pLib->handle = LoadLibraryExA(path, NULL, 0);
    return pLib;
}

void* SharedLib_GetProc(struct SharedLib* pSharedLib, const char* procName)
{
    return GetProcAddress(pSharedLib->handle, procName);
}

#endif