Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7874 Discussions

MSPDB110.DLL/MSPDB120.DLL not found, 32-bit command window

Black Belt

I have noticed an issue with the Windows Intel C++ compiler. The Start menu shortcut Compiler 16.0 Update 1 for IA-32 Visual Studio 2013 environment for targeting IA-32 launches C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\lang\INTEL16\compilers_and_libraries_2016.1.139\windows\bin\ipsxe-comp-vars.bat" ia32 vs2013". In the command window that opens, ifort /Zi works fine, but icl /Zi fails, complaining that the required MSPDB110.DLL is not available. Using cl /Zi works in the same window, and MSPDB110.DLL and MSPDB120.DLL exist and are accessible through PATH. What gives?

A little probing shows that in the new setup up for 16.0 Update 1, even for 32-bit targets the ICL compiler itself is a 64 bit exe: the command where icl.exe  gives compilers_and_libraries_2016.1.139\windows\bin\intel64_ia32\icl.exe .That is a 64-bit EXE, and it then probably looks for a 64-bit MSPDB110.DLL or MSPDB120.DLL, and finding only the 32-bit DLL along PATH, says that the DLL was not found. The ifort.exe in the same directory is also a 64-bit EXE, but it seems to have no problems finding the MSPDBxxx.DLL, so I do not know/understand the details of what goes on.

I solved the problem by copying MSPDB120.DLL from <VC_install_dir>\VS12\vc\bin\amd64 into the\bin\intel64_ia32 directory, but there has to be a better solution.

0 Kudos
3 Replies

I can reproduce the issue, it seems only fail with ICL 32bit with /Zi. I'll report it to dev team to fix.

:type test.cpp
int main() { return 0; }
:icl test.cpp /nologo /Zi
warning #31001: The dll for reading and writing the pdb (for example, mspdb110.d
ll) could  not be found on your path. This is usually a configuration error. Com
pilation will continue using /Z7 instead of /Zi, but expect a similar error when
 you link your program.

:cl test.cpp /nologo /Zi

:icl /QV
Intel(R) C++ Intel(R) 64 Compiler for applications running on IA-32, Version 16.
0.1.146 Build 20151021
Copyright (C) 1985-2015 Intel Corporation.  All rights reserved.




0 Kudos
Black Belt

Here is an explanation of why we continue to see this error with the recently released version of the compiler. The compiler, when invoked with /Zi, is a 64-bit EXE (in ...\compilers_and_libraries_2016.2.180\windows\bin\intel64_ia32) that targets IA32. That 64-bit EXE wants to load a matching 64-bit version of the MSPDB110.DLL, but finds only the 32-bit DLL of the same name on %PATH%, and reports the DLL as "not found".

Altering %PATH% such that ...\VC\bin\amd64 appears before ...\VC\bin fixes the problem as far as running compilations goes, but that is probably going to create other problems; therefore, a proper solution has to be found for this misconfiguration.

Interestingly, this problem does not occur with the companion Intel Fortran compiler.

0 Kudos

Only the C++ compiler is 'unified' for 16.0 -- a 64-bit mcpcom.exe generates both 32-bit and 64-bit targets.  You don't see the issue with Fortran because in 16.0 there is no such 'unified' version.  A 32-bit fortcom.exe is used to generate 32-bit targets.


0 Kudos