- Support loading either fluidsynth.dll or libfluidsynth.dll on Windows.

SVN r3927 (trunk)
This commit is contained in:
Randy Heit 2012-11-01 03:01:04 +00:00
parent bfae51ed2e
commit 4f71176ed6
1 changed files with 14 additions and 7 deletions

View File

@ -50,9 +50,11 @@
#ifdef _WIN32 #ifdef _WIN32
#ifndef _M_X64 #ifndef _M_X64
#define FLUIDSYNTHLIB "fluidsynth.dll" #define FLUIDSYNTHLIB1 "fluidsynth.dll"
#define FLUIDSYNTHLIB2 "libfluidsynth.dll"
#else #else
#define FLUIDSYNTHLIB "fluidsynth64.dll" #define FLUIDSYNTHLIB1 "fluidsynth64.dll"
#define FLUIDSYNTHLIB2 "libfluidsynth64.dll"
#endif #endif
#else #else
#include <dlfcn.h> #include <dlfcn.h>
@ -665,16 +667,21 @@ bool FluidSynthMIDIDevice::LoadFluidSynth()
{ (void **)&fluid_synth_sysex, "fluid_synth_sysex" }, { (void **)&fluid_synth_sysex, "fluid_synth_sysex" },
}; };
int fail = 0; int fail = 0;
const char *libname;
#ifdef _WIN32 #ifdef _WIN32
FluidSynthDLL = LoadLibrary(FLUIDSYNTHLIB); FluidSynthDLL = LoadLibrary((libname = FLUIDSYNTHLIB1));
if (FluidSynthDLL == NULL) if (FluidSynthDLL == NULL)
{ {
Printf(TEXTCOLOR_RED"Could not load " FLUIDSYNTHLIB "\n"); FluidSynthDLL = LoadLibrary((libname = FLUIDSYNTHLIB2));
if (FluidSynthDLL == NULL)
{
Printf(TEXTCOLOR_RED"Could not load " FLUIDSYNTHLIB1 " or " FLUIDSYNTHLIB2 "\n");
return false; return false;
} }
}
#else #else
FluidSynthSO = dlopen(FLUIDSYNTHLIB, RTLD_LAZY); FluidSynthSO = dlopen((libname = FLUIDSYNTHLIB), RTLD_LAZY);
if (FluidSynthSO == NULL) if (FluidSynthSO == NULL)
{ {
Printf(TEXTCOLOR_RED"Could not load " FLUIDSYNTHLIB ": %s\n", dlerror()); Printf(TEXTCOLOR_RED"Could not load " FLUIDSYNTHLIB ": %s\n", dlerror());
@ -691,7 +698,7 @@ bool FluidSynthMIDIDevice::LoadFluidSynth()
#endif #endif
if (proc == NULL) if (proc == NULL)
{ {
Printf(TEXTCOLOR_RED"Failed to find %s in %s\n", imports[i].FuncName, FLUIDSYNTHLIB); Printf(TEXTCOLOR_RED"Failed to find %s in %s\n", imports[i].FuncName, libname);
fail++; fail++;
} }
*imports[i].FuncPointer = (void *)proc; *imports[i].FuncPointer = (void *)proc;