Сборка с проектом Visual Studio 2017, но _MSC_VER показывает 1900

У меня проблема с проектом, и, возможно, кто-то может дать мне несколько советов. У меня есть проект в решении, которое было создано или обновлено в последний раз с Visual Studio 2015, Теперь я хочу построить этот проект с Visual Studio 2017,

Итак, я запускаю командный файл %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat amd64 с параметром. Затем я обновляю проект командой devenv solution.sln /Upgrade, Я вижу следующий вывод:

Microsoft Visual Studio 2017 Version 15.0.27703.1.
Copyright (C) Microsoft Corp. All rights reserved.
Upgrading project 'project1'...
    Configuration 'Debug|Win32': changing Platform Toolset to 'v141' (was 'v140').
    Configuration 'Debug|x64': changing Platform Toolset to 'v141' (was 'v140').
    Configuration 'Release|Win32': changing Platform Toolset to 'v141' (was 'v140').
    Configuration 'Release|x64': changing Platform Toolset to 'v141' (was 'v140').

Migration completed successfully, but some warnings were detected during migration.
For more information, see the migration report:
C:\path\to\project\UpgradeLog.htm

В этом UpgradeLog.htmЯ вижу только это предупреждение:

solution.sln: Visual Studio needs to make non-functional changes to this project in order to enable the project to open in released versions of Visual Studio newer than Visual Studio 2010 SP1 without impacting project behavior.

Затем, когда проект собран, я вижу это сообщение при сборке проекта (я удалил реальное имя проекта, имена исходных файлов и реальные пути здесь. Это не должно быть проблемой):

ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\CL.exe /c /Iinclude /IC:\path\to\other\include /Zi /nologo /W3 /WX- /diagnostics:classic /MP /O2 /Ob2 /Ot /Oy- /GL /D WIN64 /D NDEBUG /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Release\x64\\" /Fd"C:\path\to\debug\symbols\debug.pdb" /Gd /TP /FC /errorReport:queue c1.cpp c2.cpp c3.cpp
  c1.cpp
  c2.cpp
  c3.cpp
  Unknown compiler version - please run the configure tests and report the results
  Unknown compiler version - please run the configure tests and report the results
  Unknown compiler version - please run the configure tests and report the results
Lib:
  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\Lib.exe /OUT:"C:\path\to\lib\project.lib" some_other.lib /LIBPATH:C:\path\to\other\lib64 /NOLOGO /MACHINE:X64 /LTCG Release\x64\c1.obj
  Release\x64\c2.obj
  Release\x64\c3.obj

Но позже, когда я ищу в файле project.lib за _MSC_VER с командой find "_MSC_VER" project.libЯ получаю этот вывод (несколько раз):

/FAILIFMISMATCH:"_MSC_VER=1900"

Но я ожидал получить этот вывод (из-за Visual Studio 2017):

/FAILIFMISMATCH:"_MSC_VER=1910"

Как это может быть?

1 ответ

/FAILIFMISMATCH:"_MSC_VER=1900" указывает, что файл был собран с MSVC++ 14.0 (Platform Toolset v140). Так как, согласно журналу обновления, project1 был перенесен в v141, я думаю, что либо:

  • он не был восстановлен, и вы ссылаетесь на старые файлы.obj; или же
  • сообщения, которые вы видите, поступают из объектных файлов, созданных другими проектами, предназначенными для v140.

Что касается сообщений во время компиляции, я подозреваю, что вы используете библиотеки Boost не позднее 1.62 - вы можете увидеть проверку версии и сообщение в нижней части заголовка visualc.hpp. В этом случае вам нужно будет либо обновить библиотеки Boost, либо изменить набор инструментов платформы обратно на v140.

Другие вопросы по тегам