[Ohrrpgce] Problem starting gfx_directx

Ralph Versteegen teeemcee at gmail.com
Wed Dec 23 04:30:38 PST 2009


2009/12/24 Mike Caron <caron.mike at gmail.com>:
> Ralph Versteegen wrote:
>>
>> 2009/12/23 Jay Tennant <hierandel8 at crazyleafgames.com>:
>>>>
>>>> From: Ralph Versteegen <teeemcee at gmail.com>
>>>> Sent: Tuesday, December 22, 2009 10:35 PM
>>>> 2009/12/23 James Paige <Bob at hamsterrepublic.com>:
>>>>>
>>>>> I was just testing out a windows build with gfx_directx gfx_sdl on a
>>>>> computer with directx 9.0c installed (according to dxdiag). When I run
>>>>> game.exe it says:
>>>>>
>>>>> "This application has failed to start because d3dx9_41.dll was not
>>>>> found. Re-installing the application may fix this problem."
>>>>>
>>>>> When I click okay on it, then game.exe starts up okay falling back on
>>>>> gfx_sdl
>>>>>
>>>>> Any idea why this might happen?
>>>>>
>>>>> ---
>>>>> James Paige
>>>
>>> d3dx9_41.dll is one of many dll's that microsoft has released to patch
>>> the d3dx library. A solution to this would be obtaining the latest dx
>>> runtime on your computer, available at:
>>>
>>> http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=en
>>>
>>> An alternative would be compiling the backend with static linking the
>>> d3dx library, which was available in the december 2004 dx sdk. This will
>>> remove dependencies, but will increase the dll size by about 500kb.
>>>
>>>> That's interesting, I was under the impression that loading
>>>> gfx_directx.dll would silently fail if its dependencies weren't
>>>> available. Luckily, it's quite simple to check in backends.bas whether
>>>> d3dx9_41.dll (the august 2009, I think, release of the Direct3D 9
>>>> utility library) is present before attempting to load gfx_direct.dll,
>>>> and I was originally planning to do.
>>>
>>> It's present in March 2009. I was trying to manually remove all
>>> dependencies, but got stuck with the screenshot and font algorithms.
>>>
>>> I'll upload a version of gfx_directx that has no dependencies in a few
>>> minutes, though 500kb larger.
>>
>> We ought to have some way to detect whether or not the dll has been
>> statically linked to d3dx9 or not. Would it be possible to set the
>> version number (the one seen in a the file browser) and read it
>> somehow?
>
> I haven't looked at this backend at all, so I don't know if this is already
> done, but the standard way of doing this (on Windows, at least) is something
> like this:
>
> hModule = DyLibLoad("gfx_directx.dll")
> hFunction = DyLibSymbol(hModule,
> "some_function_that_exists_in_d3dx9_41_dll")
>
> if hFunction != 0 then
>  'd3dx9_41.dll is statically linked
> end if
>
> DyLibFree(hModule)
>
> --
> Mike

Well that won't work, because surprisingly windows pops up a message
box when the dependency is missing

However, I saw a winapi function to load a dll without resolving its
dependencies (for the purposes of loading resources), probably that
can be used in the way you described.



More information about the Ohrrpgce mailing list