DLL separation and PROFILE functions

Ian Pilcher ian.pilcher at home.com
Tue May 15 16:29:10 CDT 2001


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.

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.  I think that the proper approach is to add the
function in question to dlls/ntdll/ntdll.spec and make sure that the
importing DLL lists ntdll.dll as an import in its own SPEC file.

All of which is wonderful until you consider the following in
ntdll.spec:

##################
# 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?
(For example, PROFILE_EnumWineIniString would become
__wine_EnumIniString.)

-- 
========================================================================
Ian Pilcher                                         ian.pilcher at home.com
========================================================================




More information about the wine-devel mailing list