6 int dlclose(void *handle
);
7 void *dlsym(void *handle
, const char *symbol
);
8 void *dlopen(const char *path
, int mode
);
10 static char last_dyn_error
[512];
15 DWORD err
= GetLastError();
17 if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS
|
18 FORMAT_MESSAGE_FROM_SYSTEM
,
21 MAKELANGID(LANG_ENGLISH
, SUBLANG_DEFAULT
),
23 sizeof(last_dyn_error
) - 1,
26 snprintf(last_dyn_error
, sizeof(last_dyn_error
) - 1,
27 "unknown error %lu", err
);
34 if (last_dyn_error
[0])
35 return last_dyn_error
;
43 if (!FreeLibrary((HMODULE
) handle
))
48 last_dyn_error
[0] = 0;
53 dlsym(void *handle
, const char *symbol
)
57 ptr
= GetProcAddress((HMODULE
) handle
, symbol
);
63 last_dyn_error
[0] = 0;
68 dlopen(const char *path
, int mode
)
73 /* Disable popup error messages when loading DLLs */
74 prevmode
= SetErrorMode(SEM_FAILCRITICALERRORS
| SEM_NOOPENFILEERRORBOX
);
75 h
= LoadLibrary(path
);
76 SetErrorMode(prevmode
);
83 last_dyn_error
[0] = 0;