[Bug 26350] Dungeons demo doesn't run (LoadLibraryEx with LOAD_WITH_ALTERED_SEARCH_PATH and relative path)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Apr 7 14:02:32 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=26350

Anastasius Focht <focht at 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 at 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 at 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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list