Visual Studio 2017 — 64-битный проект .NET C ++ компилируется с 32-битным MSBuild / CL.exe, но не может найти corecrt.h с 64-битным MSBuild.exe / CL.exe

У меня есть небольшой vcxproj. Он только 64-битный, использует набор инструментов платформы v141 и использовал Windows SDK 8.1, я также пытался использовать Windows SDK 10.0.16299.0, чтобы увидеть, если это имеет какое-то значение, но это не так.

Ранее проект компилировался с использованием 32-битного MSBuild и работал нормально. Недавно я попытался скомпилировать с использованием 64-битной MSBuild. Вызов командной строки для компилятора C ++ идентичен (включая все каталоги include), кроме компилятора, который он вызывает

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\CL.exe

вместо

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\bin\HostX86\x64\CL.exe"

(изменил HostX86 -> Hostx64). Это приводит к следующему сообщению об ошибке:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\crtdefs.h(10, 0): error C1083: Cannot open include file: 'corecrt.h': No such file or directory

Я в недоумении относительно того, в чем может быть проблема; он использует те же пути включения и тот же Windows SDK. Я не понимаю, почему разрядность компилятора должна влиять на то, сможет ли он найти файл заголовка, если целевая архитектура не изменилась!

На машине, на которой он работает, установлены Visual Studio 2017 Enterprise, Windows SDK 8.1 и Windows SDK 10.0.16299.0.

Чуть более широкий контекст: это возникло как часть обновления наших сборочных зависимостей. Мы используем Invoke-Build для запуска сборки, и с 3.6.3 она начала обнаруживать 64-битные установки MSBuild и использовать их по умолчанию. Я мог бы, конечно, просто прикрепиться к 32-битному MSBuild, но я бы хотел понять, почему разрядность инструментов сборки имеет значение в этой ситуации.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector