#include <stdio.h>
#include <exim4/local_scan.h>
#include <dlfcn.h>

void* loadLibrary(char* filename)
{
    void* handle = dlopen( filename, RTLD_NOW );
    if( !handle )
    {
        printf("error: %s",  dlerror());
        return NULL;
    }

    return handle;
}

int go(void* handle)
{
    typedef int (*go_t)();
    go_t go = (go_t) dlsym(handle, "go");
    if (!go) {
        printf("Cannot load symbol 'go': %s", dlerror());
        dlclose(handle);
        return 1;
    }
    else
    {
        go();
        printf("finished go()");
    }

    return 0;
}

int main()
{
    void* python = loadLibrary("./mylib.so");

    if (python != NULL)
    {
        go(python);
        dlclose(python);
    }

    return 0;
}
