- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page