Index: /trunk/src/VBox/GuestHost/OpenGL/Makefile.kmk
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/Makefile.kmk	(revision 46659)
+++ /trunk/src/VBox/GuestHost/OpenGL/Makefile.kmk	(revision 46660)
@@ -115,8 +115,14 @@
 VBoxOGLcrutil_LIBS.win = \
 	$(PATH_SDK_$(VBOX_WINDDK)_LIB)/ddraw.lib \
-	$(PATH_SDK_$(VBOX_WINDDK)_LIB)/dxguid.lib
+	$(PATH_SDK_$(VBOX_WINDDK)_LIB)/dxguid.lib \
+	$(PATH_SDK_$(VBOX_WINDDK)_LIB)/shlwapi.lib
 VBoxOGLcrutil_LIBS = \
 	$(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
 	$(VBOX_LIB_VBGL_R3_SHARED)
+
+# Needed by GDEbuger
+ifdef CR_NO_GL_SYSTEM_PATH
+VBoxOGLcrutil_DEFS       += CR_NO_GL_SYSTEM_PATH
+endif 
 ifdef VBOX_WITH_CRHGSMI
 VBoxOGLcrutil_DEFS.win    += VBOX_WITH_CRHGSMI
Index: /trunk/src/VBox/GuestHost/OpenGL/spu_loader/glloader.py
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/spu_loader/glloader.py	(revision 46659)
+++ /trunk/src/VBox/GuestHost/OpenGL/spu_loader/glloader.py	(revision 46660)
@@ -64,8 +64,4 @@
 #else
 #define GLLOADER_APIENTRY
-#endif
-
-#if defined(WINDOWS) && (defined(DEBUG_leo) || defined(DEBUG_ll158262) || defined(DEBUG_misha))
-# define CR_NO_GL_SYSTEM_PATH 1
 #endif
 
Index: /trunk/src/VBox/GuestHost/OpenGL/util/dll.c
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/util/dll.c	(revision 46659)
+++ /trunk/src/VBox/GuestHost/OpenGL/util/dll.c	(revision 46660)
@@ -17,4 +17,8 @@
 #if defined(IRIX) || defined(IRIX64) || defined(Linux) || defined(FreeBSD) || defined(AIX) || defined(DARWIN) || defined(SunOS) || defined(OSF1)
 #include <dlfcn.h>
+#endif
+
+#ifdef WINDOWS
+#include <Shlwapi.h>
 #endif
 
@@ -147,5 +151,4 @@
 
 #endif
-
 
 /*
@@ -163,4 +166,40 @@
 	CRDLL *dll;
 	char *dll_err;
+#if defined(WINDOWS)
+    char   szPath[MAX_PATH];
+
+    (void) resolveGlobal;
+
+# ifndef CR_NO_GL_SYSTEM_PATH
+    if (PathIsRelative(dllname))
+    {
+        size_t cbName  = strlen(dllname) + 1;
+#  ifdef IN_GUEST
+        UINT   cchPath = GetSystemDirectoryA(szPath, sizeof(szPath));
+#  else
+        UINT   cchPath = GetModuleFileNameA(NULL, szPath, sizeof(szPath));
+        if (cchPath != 0 && cchPath <= sizeof(szPath))
+        {
+            char * pszSlashFile = strrchr(szPath, '\\');
+            if (pszSlashFile)
+            {
+                cchPath = pszSlashFile - szPath;
+            }
+        }
+#  endif
+
+        if (cchPath + 1 + cbName > sizeof(szPath))
+        {
+            crError("invalid path specified");
+            SetLastError(ERROR_FILENAME_EXCED_RANGE);
+            return NULL;
+        }
+        szPath[cchPath] = '\\';
+        memcpy(&szPath[cchPath + 1], dllname, cbName);
+
+        dllname = szPath;
+    }
+# endif // CR_NO_GL_SYSTEM_PATH
+#endif
 
 	dll = (CRDLL *) crAlloc( sizeof( CRDLL ) );
@@ -168,7 +207,10 @@
 
 #if defined(WINDOWS)
-	(void) resolveGlobal;
-	dll->hinstLib = LoadLibrary( dllname );
-	dll_err = NULL;
+    dll->hinstLib = LoadLibrary( dllname );
+    if (!dll->hinstLib)
+    {
+        crError("failed to load dll %s", dllname);
+    }
+    dll_err = NULL;
 #elif defined(DARWIN)
 	/* XXX \todo Get better error handling in here */
