Files
0ad/source/lib/sysdep/win/wposix/wdlfcn.cpp
T
janwas a859562ea7 improvements and fixes:
- properly differentiate between buffer/offset alignment and length
alignment (relevant since block size has been increased to 256k)
- use VfsPath for most game paths instead of CStr
- clean up timer interface and implementation
- self-tests no longer crash
- file_cache.cpp: fix for the case where allocation fails (prevent
deleter from seeing a null pointer)
- allocators: move all shared_ptr-related stuff to its own component;
add DummySharedPtr
- codec: disable checksums (important for performance at work)
- File: made into an interface class to avoid export problems. not
entirely sure about this..
- vfs_path.h, path.h, os_path.h: proper fix for using
fs::change_extension and similar utility functions with derivatives of
basic_path
- lib_api: automatically link against import lib if building lib/ as a
DLL
- path_util: remove unused functions (this component is deprecated)
- compiler.h: add INLINE
- Xeromyces.cpp: pass PIVFS so that GetXMBPath works in self-test
(should do this mostly everywhere rather than have one singleton g_VFS)

This was SVN commit r5537.
2008-01-07 20:03:19 +00:00

51 lines
923 B
C++

#include "precompiled.h"
#include "wdlfcn.h"
#include "lib/os_path.h"
#include "wposix_internal.h"
static HMODULE HMODULE_from_void(void* handle)
{
return (HMODULE)handle;
}
static void* void_from_HMODULE(HMODULE hModule)
{
return (void*)hModule;
}
int dlclose(void* handle)
{
BOOL ok = FreeLibrary(HMODULE_from_void(handle));
WARN_RETURN_IF_FALSE(ok);
return 0;
}
char* dlerror(void)
{
return 0;
}
void* dlopen(const char* so_name, int flags)
{
debug_assert(!(flags & RTLD_GLOBAL));
OsPath path = fs::change_extension(so_name, ".dll");
HMODULE hModule = LoadLibrary(path.external_directory_string().c_str());
debug_assert(hModule);
return void_from_HMODULE(hModule);
}
void* dlsym(void* handle, const char* sym_name)
{
HMODULE hModule = HMODULE_from_void(handle);
void* sym = GetProcAddress(hModule, sym_name);
debug_assert(sym);
return sym;
}