Сборка с проектом Visual Studio 2017, но _MSC_VER показывает 1900 - PullRequest
0 голосов
/ 14 мая 2018

У меня проблема с проектом, и, возможно, кто-то может дать мне несколько советов.У меня есть проект в решении, который был создан или обновлен в последний раз с 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 Ответ

0 голосов
/ 17 мая 2018

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

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

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

...