Looking at shell32.dll I do see that it is the intention to get rid completely of any link time dependencies to ole32.dll for DLL separation.
There are several late bound dependencies but I guess these are not any issue as they can not possible cause circular dependencies at load time.
I have identified following direct dependencies from shell32 on ole32.
location resolution
pidl.c CLSIDFromString change to SHCLSIDFromString shell32_main.c CoCreateInstance change to internal late bound __CoCreateInstance shellole.c CoCreateInstance change to internal late bound __CoCreateInstance CLSIDFromString SHCLSIDFromString either link or forward to SHLWAPI_436 or create late bound CLSIDFromString shellord.c CoCreateInstance change to internal late bound __CoCreateInstance CoUninitialize create late bound CoUninitialize CoInitialize create late bound CoInitialize shellstring.c CoTaskMemFree create late bound CoTaskMemFree shlfldr_desktop.c CLSIDFromString change to SHCLSIDFromString
The questions I have is, is it desirable to change those dependencies to late bound calls to OLE32, as there are already several in shell32.dll to remove any direct load dependency or does this only create additional problems?
Also the remark in shlwapi.ordinal.c about SHLWAPI_436 that it must recode the function as the native DLL seems not to import ole32 or vice versa seems a bit strange. What if native also uses late binding for those functions?
Rolf Kalbermatter