#include "SDL_internal.h"
#ifdef SDL_LOADSO_WINDOWS
#include "../../core/windows/SDL_windows.h"
SDL_SharedObject *SDL_LoadObject(const char *sofile)
{
CHECK_PARAM(!sofile) {
SDL_InvalidParamError("sofile");
return NULL;
}
LPWSTR wstr = WIN_UTF8ToStringW(sofile);
HMODULE handle = LoadLibraryW(wstr);
SDL_free(wstr);
if (!handle) {
char errbuf[512];
SDL_snprintf(errbuf, sizeof (errbuf), "Failed loading %s", sofile);
WIN_SetError(errbuf);
}
return (SDL_SharedObject *) handle;
}
SDL_FunctionPointer SDL_LoadFunction(SDL_SharedObject *handle, const char *name)
{
SDL_FunctionPointer symbol = (SDL_FunctionPointer)GetProcAddress((HMODULE)handle, name);
if (!symbol) {
char errbuf[512];
SDL_snprintf(errbuf, sizeof (errbuf), "Failed loading %s", name);
WIN_SetError(errbuf);
}
return symbol;
}
void SDL_UnloadObject(SDL_SharedObject *handle)
{
if (handle) {
FreeLibrary((HMODULE)handle);
}
}
#endif