Index: trunk/src/lib/freetype2.cc
===================================================================
--- trunk/src/lib/freetype2.cc	(revision 108)
+++ trunk/src/lib/freetype2.cc	(revision 109)
@@ -148,5 +148,7 @@
 {
 #	define NV_FREETYPE_LOAD( symbol ) *(void **) (&symbol) = freetype_library.get(#symbol);
-	static nv::library freetype_library( path );
+	static nv::library freetype_library;
+	if ( freetype_library.is_open() ) return true;
+	freetype_library.open( path );
 
 	NV_FREETYPE_LOAD( FT_Init_FreeType );
Index: trunk/src/lib/gl.cc
===================================================================
--- trunk/src/lib/gl.cc	(revision 108)
+++ trunk/src/lib/gl.cc	(revision 109)
@@ -203,5 +203,8 @@
 #		define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
 #else
-	static nv::library gl_library( path );
+	static nv::library gl_library;
+	if ( gl_library.is_open() ) return true;
+	gl_library.open( path );
+
 	void * (NV_GL_APIENTRY *ext_loader) (const char* proc) = nullptr;
 #	if NV_PLATFORM == NV_WINDOWS 
Index: trunk/src/lib/lua.cc
===================================================================
--- trunk/src/lib/lua.cc	(revision 108)
+++ trunk/src/lib/lua.cc	(revision 109)
@@ -185,5 +185,8 @@
 #	define NV_LUA_LOAD( symbol ) *(void **) (&symbol) = lua_library.get(#symbol);
 
-	static nv::library lua_library( path );
+	static nv::library lua_library;
+	if ( lua_library.is_open() ) return true;
+	lua_library.open( path );
+
 
 /* State manipulation */
Index: trunk/src/lib/sdl12.cc
===================================================================
--- trunk/src/lib/sdl12.cc	(revision 108)
+++ trunk/src/lib/sdl12.cc	(revision 109)
@@ -191,5 +191,7 @@
 {
 #	define NV_SDL_LOAD( symbol ) *(void **) (&symbol) = sdl_library.get(#symbol);
-	static nv::library sdl_library( path );
+	static nv::library sdl_library;
+	if ( sdl_library.is_open() ) return true;
+	sdl_library.open( path );
 
 /* SDL.h functions */
Index: trunk/src/lib/sdl_image.cc
===================================================================
--- trunk/src/lib/sdl_image.cc	(revision 108)
+++ trunk/src/lib/sdl_image.cc	(revision 109)
@@ -37,5 +37,7 @@
 {
 #	define NV_SDL_IMAGE_LOAD( symbol ) *(void **) (&symbol) = sdl_image_library.get(#symbol);
-	static nv::library sdl_image_library( path );
+	static nv::library sdl_image_library;
+	if ( sdl_image_library.is_open() ) return true;
+	sdl_image_library.open( path );
 
 	NV_SDL_IMAGE_LOAD( IMG_Linked_Version );
Index: trunk/src/library.cc
===================================================================
--- trunk/src/library.cc	(revision 108)
+++ trunk/src/library.cc	(revision 109)
@@ -36,9 +36,7 @@
 using namespace nv;
 
-library::library( const std::string& name ) 
-    : m_name( name )
+library::library() 
+    : m_name(), m_handle( nullptr )
 {
-    m_handle = NULL;
-    open();
 }
 
@@ -90,5 +88,8 @@
 }
 
-
+bool library::is_open() const
+{
+	return m_handle != nullptr;
+}
 
 void library::close()
