11 #include <drift/dslcore.h>
12 #include <drift/DynamicLinking.h>
13 #include <drift/WhereIs.h>
19 for (
int i=0; i < res->nCount && hDL == NULL; i++) {
20 hDL = DL_Open(res->sResults[i]);
22 WhereIs_FreeResults(res);
29 DL_HANDLE DSL_CC DL_Open(
const char * fn) {
30 return LoadLibraryA(fn);
33 void * DSL_CC DL_GetAddress(DL_HANDLE hHandle,
const char * name) {
34 return GetProcAddress(hHandle,name);
37 void DSL_CC DL_Close(DL_HANDLE hHandle) {
41 static char dl_error_buf[256];
42 const char * DSL_CC DL_LastError() {
43 memset(dl_error_buf, 0,
sizeof(dl_error_buf));
44 if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), LANG_SYSTEM_DEFAULT, dl_error_buf,
sizeof(dl_error_buf)-1, NULL) == 0) {
45 strcpy(dl_error_buf,
"Error getting error message!");
52 DL_HANDLE DL_Open(
const char * fn) {
54 HANDLE hHandle = dlopen(fn,RTLD_LAZY|RTLD_LOCAL);
55 if (hHandle == NULL) {
56 hHandle = dlopen(fn,RTLD_NOW|RTLD_LOCAL);
59 HANDLE hHandle = dlopen(fn,RTLD_LAZY|RTLD_LOCAL|RTLD_DEEPBIND);
60 if (hHandle == NULL) {
61 hHandle = dlopen(fn,RTLD_NOW|RTLD_LOCAL|RTLD_DEEPBIND);
67 void * DL_GetAddress(DL_HANDLE hHandle,
const char * name) {
68 return dlsym(hHandle,name);
71 void DL_Close(DL_HANDLE hHandle) {
75 const char * DL_LastError() {
DL_HANDLE DSL_CC DL_FindAndOpen(const char *fn)
Attempts to find the named library in common library folders (c:\windows\system32 on Windows,...