DLL separation and PROFILE functions
Ove Kaaven
ovehk at ping.uio.no
Wed May 16 04:07:39 CDT 2001
On Tue, 15 May 2001, Ian Pilcher wrote:
> DLL separation has been mentioned quite a few times on this list
> (usually as the ultimate solution to a problem), but I don't think I've
> ever seen it actually defined. Based on my own misadventures in this
> area, however, I would hazard a guess that is essentially the conversion
> of all inter-DLL function calls from OS-based dynamic linking to the
> Wine DLL loading mechanism.
Yes, this is needed to be able to have Wine DLLs and Winelib apps be able
to seamlessly import and use native PE DLLs.
> Under this assumption, adding 'IMPORTS = ntdll' to a DLL's Makefile.in
> file (in order to use one of the PROFILE functions) seems like a
> definite step backwards.
The profile functions are not exported and you should not use them. If
you're trying to access the config file, use the registry API instead; for
an example, see what Alexandre did in dlls/x11drv/x11drv_main.c. You'll
see the reason Alexandre changed the .wine/config file format to the
registry format.
> ##################
> # Wine extensions
> #
> # All functions must be prefixed with '__wine_' (for internal functions)
> # or 'wine_' (for user-visible functions) to avoid namespace conflicts.
>
> This would seem to indicate that the PROFILE functions (in
> files/profile.c) need to have their names changed before they are
> exported. Is this an appropriate time to go crazy with grep and sed?
You could use #defines in a .h file too, but you shouldn't add wine
extensions without a *very* good reason. Alexandre has even advocated code
duplication in some instances to keep DLL separation tight.
More information about the wine-devel
mailing list