DerelictOrg / DerelictAllegro5

A dynamic binding to the Allegro 5 library for the D Programming Language.
3 stars 1 forks source link

The specified module could not be found - x4 #4

Open joelcnz opened 7 years ago

joelcnz commented 7 years ago

I'm using Windows, with dmd32 2.074.1

I have the dlls in the path: PATH=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Skype\Phone\;d:\jpro\dmd2\windows\bin;d:\jpro\dlls

I get this: Running .\app.exe

derelict.util.exception.SharedLibLoadException@C:\Users\Timothy\AppData\Roaming\dub\packages\derelict-util-2.0.6\derelict-util\source\derelict\util\exception.d(35): Failed to load one or more shared libraries: allegro_monolith-5.2.dll - The specified module could not be found. allegro_monolith-5.2.0-mt.dll - The specified module could not be found. allegro-5.2.dll - The specified module could not be found. allegro-5.2.0-mt.dll - The specified module could not be found.

0x0040E272 in void derelict.util.exception.SharedLibLoadException.throwNew(immutable(char)[][], immutable(char)[][]) at C:\Users\Timothy\AppData\Roaming\dub\packages\derelict-util-2.0.6\derelict-util\source\derelict\util\exception.d(67) 0x0040D43D in void derelict.util.sharedlib.SharedLib.load(immutable(char)[][]) at C:\Users\Timothy\AppData\Roaming\dub\packages\derelict-util-2.0.6\derelict-util\source\derelict\util\sharedlib.d(157) 0x0040CE10 in void derelict.util.loader.SharedLibLoader.load(immutable(char)[][]) at C:\Users\Timothy\AppData\Roaming\dub\packages\derelict-util-2.0.6\derelict-util\source\derelict\util\loader.d(198) 0x0040CD59 in void derelict.util.loader.SharedLibLoader.load(immutable(char)[]) at C:\Users\Timothy\AppData\Roaming\dub\packages\derelict-util-2.0.6\derelict-util\source\derelict\util\loader.d(144) 0x0040CC25 in void derelict.util.loader.SharedLibLoader.load() at C:\Users\Timothy\AppData\Roaming\dub\packages\derelict-util-2.0.6\derelict-util\source\derelict\util\loader.d(83) 0x004021ED in _Dmain at D:\jpro\dpro2\Test\Allegro\source\app.d(21) 0x00410433 in D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFNlZv 0x004103F7 in scope void rt.dmain2._d_run_main(int, char*, extern (C) int function(char[][])).runAll() 0x004102F8 in _d_run_main 0x00402224 in main at D:\jpro\dpro2\Test\Allegro\source\app.d(7) 0x0042CB45 in mainCRTStartup 0x772B3744 in BaseThreadInitThunk 0x779EA064 in RtlSetCurrentTransaction 0x779EA02F in RtlSetCurrentTransaction Program exited with code 1

mdparker commented 7 years ago

Are you sure that one of those DLLs matches one of the file names you see in the exception message?

joelcnz commented 7 years ago

I don't know what you mean. The 64 bit ones say some thing about wrong system, and the 32 ones say not found!

joelcnz commented 7 years ago

And the -mt ones, I actually don't have.

mdparker commented 7 years ago

You say you have the DLLs on your system path. The Derelict loader is looking specifically for one DLL that matches one of four possible names (which are based on different binary releases of Allegro). So you need to have one of the following on your path:

allegro_monolith-5.2.dll allegro_monolith-5.2.0-mt.dll allegro-5.2.dll allegro-5.2.0-mt.dll

If you have an Allegro 5.2 DLL under a different name, e.g. "Allegro5.dll", then you can specify it in the call to load:

DerelictAllegro5.load("Allegro5.dll");

Also, since you are compiling as 32-bit, you can't use 64-bit DLLs. However, the error message you saw suggests the loader did find your 64-bit Allegro DLL. So what's different about your 32-bit version?