Usual non microsoft dlls
Stefan Dösinger
stefan at codeweavers.com
Sun Jul 29 05:47:44 CDT 2007
Am Sonntag, 29. Juli 2007 11:10 schrieb Luis C. Busquets Pérez:
> Hello,
>
> There are a number of dlls which are of common us, e.g. mss32.dll or
> binkw32.dll in the gaming industry.
>
> These are usually distributed with the game. Nevertheless, they relay in
> other dlls of the system, e.g. zlib1.dll goes through msvcrt.dll to
> perform its activities.
>
> Therefore, I propose to include in the source tree a directory for
> "commonly used dlls not included in Windows"
This does not sound bad, and indeed we've had a discussion about that
concerning openal.dl, and we have decided that an openal thunk to Linux is a
good thing. Someone started a stub which didn't make its way in because of
implementation problems, but I think Chris Robinson is continueing the work
on it.
But in general it raises some further concernes regarding the compatiblity of
the libs. E.g. if zlib1.dll takes a pathname to a file, and the game
passes "C:\myfunkyfile.zip", linux zlib will complain that it can't find the
file. Simmilarly, Windows apps won't find "/tmp/myextactedfile/". Other
issues may occur too, depending on what the libs do. E.g. if we make a qt
thunk and the application tries to retrieve the Win32 HWND from a window
created with qt, it will lead to problems if we just call Linux qt.
For the performance, it may help in some areas, but the linux lib is not
necessarily faster. Wine does not emulate anything, Win32 code(and thus the
dlls) run natively on the CPU. using zlib.dll isn't slower than zlib.so.
Simmilarly msvcrt.dll isn't slower than libc.so. Implementation differences
between the libs may occur, but Wine does not impose any performance impact.
There are exceptions, like openal, which does not do the work on its own, but
rather calls the sound hardware. A openal->dsound->alsa->hardware conversion
on the fly is not as efficient as openal->alsa->hardware, or even
openal->hardware.
It depends on the libs wether a direct thunk to the Linux lib is possible or
not. Solid understanding of the library is needed to decide if a thunk is
possible and makes sense.
More information about the wine-devel
mailing list