Yes, to my eye it looks like a linking problem but I'm not sure how to tell. Maybe if I whittle it down to a single .c file which I can post to the list it'll make it easier to diagnose.
Well, the easier would be that, yes. Basically, just create the DDraw interface (as done in createDirectDrawObject) and call 'CreateSurface' on it. That should be enough to reproduce the problem (now that I think of it, I could do it myself, but well, I have no experience about creating Winelib apps :-) ).
Another thing helpful would be a disassembly of the 'setUpWindowedSurfaces' method (this would show what code is generated for the 'mp_directDraw->CreateSurface' call and thus understand why it choose the wrong method).
Lionel