Subject: [boost] [build] Problems with VC14 and MSPDB140.DLL (was: [testing][teeks] MSVC-14 errors about MSPDB140.DLL)
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2015-07-26 09:10:37


On Sat, May 23, 2015 at 4:40 PM, Hartmut Kaiser
<hartmut.kaiser_at_[hidden]> wrote:
>
>> All tests for Boost.Log (and I suspect any other built libraries) on MSVC-
>> 14
>> are failing because of this error:
>>
>> LINK : fatal error LNK1101: incorrect MSPDB140.DLL version; recheck
>> installation of this product
>
> My workaround was to edit the 'Path' env variable in one of the temp files
> generated by bjam (b2_msvc_14.0_vcvarsall_amd64.cmd in your temp directory)
> not to point to the x64 cross compiler, but to the native one. For me this
> involved changing
>
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64_x86
>
> To
>
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64

I encountered the same problem with VC14 RTM on my VM. This was a
clean install of VC14 RTM, there were no CTPs or RCs installed on this
machine. I removed the b2_msvc_14.0_vcvarsall*.cmd scripts and ran b2
with address-model=64 to build my tests so that these scripts are
re-created from scratch, so it looks like there is a problem with how
these scripts are generated by b2.

I found 3 instances of mspdb140.dll on my system in these locations:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64

The last two are for 32 and 64-bit native compilers. The first one, I
assume, is for use by IDE. The problem is that the first path is
listed in b2_msvc_14.0_vcvarsall_x86_amd64.cmd in the "SET Path=..."
line prior to the compiler-specific paths. Removing it from the Path
solved the problem.

Could Boost.Build be adjusted so that the cmd files are generated
correctly in the first place?