diff --git a/src/Common/SharedLibrary.hpp b/src/Common/SharedLibrary.hpp
index 39945f3..8a8c3a1 100644
--- a/src/Common/SharedLibrary.hpp
+++ b/src/Common/SharedLibrary.hpp
@@ -89,10 +89,13 @@
 		return (void*)GetProcAddress((HMODULE)library, name);
 	}
 
-	inline std::string getLibraryDirectoryFromSymbol(void* symbol)
+	inline std::string getModuleDirectory()
 	{
+		static int dummy_symbol = 0;
+
 		HMODULE module = NULL;
-		GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCTSTR)symbol, &module);
+		GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCTSTR)&dummy_symbol, &module);
+
 		char filename[1024];
 		if(module && (GetModuleFileName(module, filename, sizeof(filename)) != 0))
 		{
@@ -148,10 +151,12 @@
 		return symbol;
 	}
 
-	inline std::string getLibraryDirectoryFromSymbol(void* symbol)
+	inline std::string getModuleDirectory()
 	{
+		static int dummy_symbol = 0;
+
 		Dl_info dl_info;
-		if(dladdr(symbol, &dl_info) != 0)
+		if(dladdr(&dummy_symbol, &dl_info) != 0)
 		{
 			std::string directory(dl_info.dli_fname);
 			return directory.substr(0, directory.find_last_of("\\/") + 1).c_str();
diff --git a/src/OpenGL/libEGL/libEGL.hpp b/src/OpenGL/libEGL/libEGL.hpp
index 74ddf65..b6d9d63 100644
--- a/src/OpenGL/libEGL/libEGL.hpp
+++ b/src/OpenGL/libEGL/libEGL.hpp
@@ -73,7 +73,7 @@
 class LibEGL
 {
 public:
-	LibEGL(const std::string libraryDirectory) : libraryDirectory(libraryDirectory)
+	LibEGL()
 	{
 	}
 
@@ -118,7 +118,8 @@
 				#error "libEGL::loadExports unimplemented for this platform"
 			#endif
 
-			libEGL = loadLibrary(libraryDirectory, libEGL_lib, "libEGL_swiftshader");
+			std::string directory = getModuleDirectory();
+			libEGL = loadLibrary(directory, libEGL_lib, "libEGL_swiftshader");
 
 			if(libEGL)
 			{
@@ -132,7 +133,6 @@
 
 	void *libEGL = nullptr;
 	LibEGLexports *libEGLexports = nullptr;
-	const std::string libraryDirectory;
 };
 
 #endif   // libEGL_hpp
diff --git a/src/OpenGL/libEGL/main.cpp b/src/OpenGL/libEGL/main.cpp
index c850610..a1ff6f1 100644
--- a/src/OpenGL/libEGL/main.cpp
+++ b/src/OpenGL/libEGL/main.cpp
@@ -649,5 +649,5 @@
 	return &libEGL;
 }
 
-LibGLES_CM libGLES_CM(getLibraryDirectoryFromSymbol((void*)libEGL_swiftshader));
-LibGLESv2 libGLESv2(getLibraryDirectoryFromSymbol((void*)libEGL_swiftshader));
+LibGLES_CM libGLES_CM;
+LibGLESv2 libGLESv2;
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.hpp b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
index 10b8e9a..ae6237b 100644
--- a/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
@@ -229,7 +229,7 @@
 class LibGLES_CM
 {
 public:
-	LibGLES_CM(const std::string libraryDirectory) : libraryDirectory(libraryDirectory)
+	LibGLES_CM()
 	{
 	}
 
@@ -279,7 +279,8 @@
 				#error "libGLES_CM::loadExports unimplemented for this platform"
 			#endif
 
-			libGLES_CM = loadLibrary(libraryDirectory, libGLES_CM_lib, "libGLES_CM_swiftshader");
+			std::string directory = getModuleDirectory();
+			libGLES_CM = loadLibrary(directory, libGLES_CM_lib, "libGLES_CM_swiftshader");
 
 			if(libGLES_CM)
 			{
@@ -293,7 +294,6 @@
 
 	void *libGLES_CM = nullptr;
 	LibGLES_CMexports *libGLES_CMexports = nullptr;
-	const std::string libraryDirectory;
 };
 
 #endif   // libGLES_CM_hpp
diff --git a/src/OpenGL/libGLES_CM/main.cpp b/src/OpenGL/libGLES_CM/main.cpp
index ea56c81..f2bd0b7 100644
--- a/src/OpenGL/libGLES_CM/main.cpp
+++ b/src/OpenGL/libGLES_CM/main.cpp
@@ -1610,4 +1610,4 @@
 	return &libGLES_CM;
 }
 
-LibEGL libEGL(getLibraryDirectoryFromSymbol((void*)libGLES_CM_swiftshader));
+LibEGL libEGL;
diff --git a/src/OpenGL/libGLESv2/entry_points.cpp b/src/OpenGL/libGLESv2/entry_points.cpp
index fa52a8b..5460bcd 100644
--- a/src/OpenGL/libGLESv2/entry_points.cpp
+++ b/src/OpenGL/libGLESv2/entry_points.cpp
@@ -1426,5 +1426,5 @@
 	return &libGLESv2;
 }
 
-LibEGL libEGL(getLibraryDirectoryFromSymbol((void*)libGLESv2_swiftshader));
-LibGLES_CM libGLES_CM(getLibraryDirectoryFromSymbol((void*)libGLESv2_swiftshader));
+LibEGL libEGL;
+LibGLES_CM libGLES_CM;
diff --git a/src/OpenGL/libGLESv2/libGLESv2.hpp b/src/OpenGL/libGLESv2/libGLESv2.hpp
index cb16caf..247c6fa 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.hpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.hpp
@@ -254,7 +254,7 @@
 class LibGLESv2
 {
 public:
-	LibGLESv2(const std::string libraryDirectory) : libraryDirectory(libraryDirectory)
+	LibGLESv2()
 	{
 	}
 
@@ -304,7 +304,8 @@
 				#error "libGLESv2::loadExports unimplemented for this platform"
 			#endif
 
-			libGLESv2 = loadLibrary(libraryDirectory, libGLESv2_lib, "libGLESv2_swiftshader");
+			std::string directory = getModuleDirectory();
+			libGLESv2 = loadLibrary(directory, libGLESv2_lib, "libGLESv2_swiftshader");
 
 			if(libGLESv2)
 			{
@@ -318,7 +319,6 @@
 
 	void *libGLESv2 = nullptr;
 	LibGLESv2exports *libGLESv2exports = nullptr;
-	const std::string libraryDirectory;
 };
 
 #endif   // libGLESv2_hpp
