diff -uNr ogre-1.9.0/OgreMain/src/OgreDynLib.cpp ogre-1.9.0.dynlib-allow-no-so/OgreMain/src/OgreDynLib.cpp --- ogre-1.9.0/OgreMain/src/OgreDynLib.cpp 2013-12-01 21:28:12.000000000 +0400 +++ ogre-1.9.0.dynlib-allow-no-so/OgreMain/src/OgreDynLib.cpp 2014-06-07 22:22:44.500257614 +0400 @@ -76,7 +76,9 @@ String name = mName; #if OGRE_PLATFORM == OGRE_PLATFORM_LINUX || OGRE_PLATFORM == OGRE_PLATFORM_NACL // dlopen() does not add .so to the filename, like windows does for .dll - if (name.find(".so") == String::npos) + mInst = (DYNLIB_HANDLE)DYNLIB_LOAD( name.c_str() ); + // Only add .so if open without it failed + if ((!mInst) && (name.find(".so") == String::npos)) { name += ".so."; name += StringConverter::toString(OGRE_VERSION_MAJOR) + "."; @@ -93,7 +95,7 @@ if (name.substr(name.length() - 4, 4) != ".dll") name += ".dll"; #endif - mInst = (DYNLIB_HANDLE)DYNLIB_LOAD( name.c_str() ); + if( !mInst ) mInst = (DYNLIB_HANDLE)DYNLIB_LOAD( name.c_str() ); #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE if(!mInst) {