Reputation: 21
I'm analyzing a DLL using dumpbin and came across the following entry in its imports section:
oledlg.dll
10273CD0 Import Address Table
102FB5B0 Import Name Table
0 time date stamp
0 Index of first forwarder reference
3 OleUIBusyW
I want to remove the dependency of oledlg.dll from my application.
These are the libs in Linker -> Input:
Rpcrt4.lib;msi.lib;shlwapi.lib;Advapi32.lib;odbc32.lib;odbccp32.lib;Version.lib;
I found out oledlg.dll in DelayLoadDLLs section of my vcxproj. I removed it from there and rebuilt the DLL, but i still see it in /imports.
I added /VERBOSE:LIB in my Linker command line and it printed the following information:
5> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86\Imm32.Lib:
5> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86\WinMM.Lib:
5> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86\oledlg.lib:
5> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86\urlmon.lib:
5> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86\msxml6.lib:
I also searched the "OleUIBusyW" but i don't see it being called anywhere. This dependency on oledlg.dll is causing my application to not work on Windows Server Core since oledlg.dll is not shipped with Server Core.
Upvotes: 1
Views: 71
Reputation: 21
Set Project Properties -> Linker -> Optimization -> References -> Yes (/OPT:REF)
This prevents the explicit dependency on oledlg.dll even when not being used.
Upvotes: 1