Ticket #4422: dlerr.win.patch

File dlerr.win.patch, 974 bytes (added by Nigel, 12 years ago)

Working MinGW dlerror() ?

  • libs/libmyth/compat.h

     
    189189#define dlopen(x, y) LoadLibraryA((x))
    190190#define dlclose(x) !FreeLibrary((HMODULE)(x))
    191191#define dlsym(x, y) GetProcAddress((HMODULE)(x), (y))
    192 #define dlerror GetLastError
     192//
     193//#define dlerror  ""
     194inline const char *dlerror(void)
     195{
     196    static char errStr[512];
     197    DWORD       errCode = GetLastError();
     198
     199    if (!FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM |
     200                        FORMAT_MESSAGE_IGNORE_INSERTS |
     201                        FORMAT_MESSAGE_MAX_WIDTH_MASK,
     202                        NULL, errCode,
     203                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
     204                        errStr, 511, NULL))
     205        sprintf(errStr, "dlopen()/dlsym() caused error %d", errCode);
     206
     207    return errStr;
     208}
    193209#endif // USING_MINGW
    194210
    195211#ifdef USING_MINGW