http://bugs.winehq.org/show_bug.cgi?id=26350
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.bigdownload.com/ |http://www.gamershell.com/d |games/dungeons/pc/dungeons- |ownload_69192.shtml |demo/ | CC| |focht@gmx.net Summary|Dungeons demo doesn't run |Dungeons demo doesn't run | |(LoadLibraryEx with | |LOAD_WITH_ALTERED_SEARCH_PA | |TH and relative path)
--- Comment #2 from Anastasius Focht focht@gmx.net 2012-04-07 14:02:32 CDT --- Hello,
confirming, still present.
As Louis said, needs 'winetricks dotnet35' prerequisite.
--- snip --- 18:35:03.760: > Ogre: Loading library dlls/RenderSystem_Direct3D9.dll 18:35:03.762: *ERROR* > Ogre: OGRE EXCEPTION(7:InternalErrorException): Could not load dynamic library dlls/RenderSystem_Direct3D9.dll. System Error: Module not found. in DynLib::load at ....\Ogre\OgreMain\src\OgreDynLib.cpp (line 91) 18:35:03.764: *ERROR* > System.Runtime.InteropServices.SEHException: External component has thrown an exception. at Ogre.Root.loadPlugin(Root* , basic_string<char,std::char_traits<char>,std::allocator<char> >* ) at Mogre.Root.LoadPlugin(String pluginName) at Realmforge.MogreUtil.Application.Ogre.LoadPlugins(Root root) at Realmforge.MogreUtil.Application.Ogre..ctor(Form form, GameApplicationData appData) at Realmforge.MogreUtil.Application.Ogre.InitInstance(Form form, GameApplicationData appData) at Realmforge.MogreUtil.Application.MainApplication`3.Run() 18:35:03.767: *ERROR* > External component has thrown an exception. --- snip ---
Source of "OGRE" component used: http://www.ogre3d.org/download/source
--- snip OgreDynLib.h --- #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # define DYNLIB_HANDLE hInstance # define DYNLIB_LOAD( a ) LoadLibraryEx( a, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ) # define DYNLIB_GETSYM( a, b ) GetProcAddress( a, b ) # define DYNLIB_UNLOAD( a ) !FreeLibrary( a ) --- snip OgreDynLib.h ---
--- snip OgreDynLib.cpp --- void DynLib::load() { // Log library load LogManager::getSingleton().logMessage("Loading library " + mName);
String name = mName; ... #elif OGRE_PLATFORM == OGRE_PLATFORM_WIN32 // Although LoadLibraryEx will add .dll itself when you only specify the library name, // if you include a relative path then it does not. So, add it to be sure. if (name.substr(name.length() - 4, 4) != ".dll") name += ".dll"; #endif m_hInst = (DYNLIB_HANDLE)DYNLIB_LOAD( name.c_str() );
if( !m_hInst ) OGRE_EXCEPT( Exception::ERR_INTERNAL_ERROR, "Could not load dynamic library " + mName + ". System Error: " + dynlibError(), "DynLib::load" ); } ... --- snip OgreDynLib.cpp ---
The comment indicates they really use relative paths on LoadLibraryEx().
Refining summary.
$ du -sh dungeons_demo_int.zip 518M dungeons_demo_int.zip
$ du -sh dungeons_demo_int.msi 525M dungeons_demo_int.msi
$ sha1sum dungeons_demo_int.zip ca30387b3ef033ee1f9ae09e57fe164009b055aa dungeons_demo_int.zip
$ sha1sum dungeons_demo_int.msi 2972801ef889bc9788d20598233ddc24ebda8069 dungeons_demo_int.msi
$ wine --version wine-1.5.1-197-g73e7346
Regards