我有一个项目问题,也许有人可以给我一些提示。我在解决方案中有一个项目,该项目是上次使用Visual Studio 2015
创建或更新的。现在,我想用Visual Studio 2017
构建这个项目。
因此,我使用参数启动批处理文件%ProgramFiles(x86)%Microsoft Visual Studio2017EnterpriseVCAuxiliaryBuildvcvarsall.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:pathtoprojectUpgradeLog.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 Studio2017EnterpriseVCToolsMSVC14.14.26428binHostX86x64CL.exe /c /Iinclude /IC:pathtootherinclude /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"Releasex64\" /Fd"C:pathtodebugsymbolsdebug.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 Studio2017EnterpriseVCToolsMSVC14.14.26428binHostX86x64Lib.exe /OUT:"C:pathtolibproject.lib" some_other.lib /LIBPATH:C:pathtootherlib64 /NOLOGO /MACHINE:X64 /LTCG Releasex64c1.obj
Releasex64c2.obj
Releasex64c3.obj
但是后来,当我使用命令find "_MSC_VER" project.lib
在文件project.lib
中搜索_MSC_VER
时,我得到了以下输出(多次(:
/FAILIFMISMATCH:"_MSC_VER=1900"
但是我希望得到这个输出(因为使用Visual Studio 2017
构建(:
/FAILIFMISMATCH:"_MSC_VER=1910"
这怎么可能?
>/FAILIFMISMATCH:"_MSC_VER=1900"
表示该文件是使用 MSVC++ 14.0(平台工具集 v140(生成的。由于根据升级日志,project1
已迁移到 v141,因此我认为
- 它尚未重建,并且您正在链接到旧的.obj文件;或
- 您看到的消息来自其他人构建的对象文件 面向 v140 的项目。
关于编译时消息,我怀疑您使用的 Boost 库不晚于 1.62 - 您可以在 visualc.hpp 标头底部看到版本检查和消息。如果是这种情况,则需要更新 Boost 库或将平台工具集更改回 v140。