"The procedure entry point SDL_UpperBlit could not be located in the dynamic library SDL.dll" in win32, but fine under linux

Greetings… ( first post)

At work, i am developing a small cross platform game engine, that uses a
plugin architechture for rending / sound

for example, there are 3 graphics plugins…

  1. Plugin for custom driver for target hardware. ( an embedded machine
    running linux )
  2. Plugin for SDL Graphics ( for Linux Development Machines )
  3. Plugin for SDL Graphics ( For Windows Development Machines )

Where plugin 2/3 are identicle c++ code, just compiled for Win32 / Linux.

The general dsign is as follows…

  1. Game Code: implements the game, and is compiled to an executable ( linked
    againsed game engine (2) )
  2. Game Engine: Implements cross platform abstracion layer, and plugin
    Loading ( Compiled as a DLL in windows, as a shared object in Linux )
  3. Graphics Plugins: Implements API specific stuff. ( compiled as a DLL in
    windows, as a shared object in Linux )

The Game engine is explicitly linked at load time,
and the Graphics plugin is loaded via dlopen() in Linux, LoadLibrary in
windows.

the SDL libraries are ONLY linked againsed the Graphics plugin.

In Linux, This is all working beautifully, the dynamic linker resolving all
symbols blah blah blah… BRILLIANT…

However, in Windows, on calling LoadLibrary(< SDL_Graphics_Plugin>) ( where
the plugin is linked to SDL.lib and SDLmain.lib )
i get the following error message

“The procedure entry point SDL_UpperBlit could not be located in the dynamic
library SDL.dll”

Any idea’s whats going wrong here ???

My SDL graphics plugin does not make any direct calls to SDL_UpperBlit, only
SDL_BlitSurface(), SDL_CreateRGBSurface, and SDL_SetVideoMode.

Does anyone have any idea’s whats gone wrong ???

Im using VisualStudio 2005, with SDL version 1.2.11

Thanks.
Chris.