I found that IDA may not load symbols for MFC DLLs while disassembling EXEs that load such DLLs. This makes the disassembling horrible if the DLL is linked just by ordinals, and IDA doesn't have a signature for the particular MFC DLL version.
For example, if I load old MFCOGL.EXE 1.0.0.1 that uses MFC42.DLL 6.06.8064.0, IDA shows all MFC DLL entries as MFC_nnnn, where nnnn is an ordinal number of the export. Even if I place MFC42.DLL together with the corresponding MFC42.PDB (downloaded from MS Symbol Store) to the same directory, IDA doesn't load PDB for the DLL, just applying the common signature:
File C:\Tmp\4\mfc42.dll is used for module MFC42...
Plugin "eh_parse" not found
Plan FLIRT signature: Microsoft VisualC 2-14/net runtime
autoload.cfg: vc32rtf.sig autoloads mssdk_win7.til
Type library 'mssdk_win7' loaded. Applying types...
Types applied to 87 names.
Plan FLIRT signature: MFC 3.1-14.0 32bit
autoload.cfg: vc32mfc.sig autoloads mssdk_win7.til
If I try to load the PDB explicitly, IDA applies it to the main EXE, not to the DLL referenced by the EXE.
If I load the DLL as an additional binary file, IDA doesn't treat it as a PE module.
Ghidra successfully finds and loads all MFC symbols, but IDA is more familiar to me.
Is there a way to instruct IDA to load the PDB?