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

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

mecej4
Honored Contributor III
830 Views

I have noticed an issue with the Windows Intel C++ 16.0.1.139 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 ...windows\bin\intel64_ia32 directory, but there has to be a better solution.

0 Kudos
3 Replies
Shenghong_G_Intel
830 Views

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
test.cpp
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
test.cpp

: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.


:

Thanks,

Shenghong

0 Kudos
mecej4
Honored Contributor III
830 Views

Here is an explanation of why we continue to see this error with the recently released version 16.0.2.180 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
pbkenned1
Employee
830 Views

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.

Patrick

0 Kudos
Reply