Not exactly; the issue is more to make sure we can override the pthreads symbols properly to do the Wine housekeeping stuff we need to do.
So the symbols only have to be overridden for within Wine? Because one solution would be to have two pthread implementations linked in at once, and to keep them separate (lots of fun with the current glibc linker, but they are interested in adding features to do that).
It works when building as a normal Winelib app, but this is not how the Mono guys want to use it from what I understand.
At the moment they use something called monostub, which is a WineLib app. That loads and initialises through "wine monostub.exe.so", then loads and hosts the Mono VM inside it. They'd prefer to just dlopen() the APIs as called via P/Invoke, but I got the impression they didn't really know how to do that... is there much special setup involved when you run "wine foo.exe.so"?