1

编辑:Visual Studio中调用错误的工具链

我使用过程监控检查,其中可执行被调用。它看起来像真的调用VS2008可执行...

https://skydrive.live.com/redir?resid=5062EFE7E0C8ECCC!2722&authkey=!AMdRW6t5aMB3u10&v=3&ithint=photo%2c.PNG

msbuild.exe执行[(12.0)tracker.exe],但是赋予它[(9.0)cl.exe时]作为命令行参数。 ..

任何想法,如何解决这个问题?

我的工作电脑上,对C++产生生成错误的VS默认模板。 (VS2010,VS2012,VS2013)

它看起来像它调用编译器的老版本(未知的选项“/ SDL”,其中SDL可能代表安全开发生命周期,已经添加了vs2012,如果我没记错)

操作系统:Windows 8(64位) 安装VS版本:2008年,2010年,2012年,2013(按照这个顺序)

我已经尝试过重新安装vs2013和重置设置。

VS2010

的Visual C++ - >的Win32 - > Win32控制台应用程序(向导的第一页上的完成)

1>------ Build started: Project: asd, Configuration: Debug Win32 ------ 
1>Build started 11.12.2013 00:22:53. 
1>PrepareForBuild: 
1> Creating directory "c:\users\myusername\documents\visual studio 2010\Projects\asd\Debug\". 
1>InitializeBuildStatus: 
1> Creating "Debug\asd.unsuccessfulbuild" because "AlwaysCreate" was specified. 
1>ClCompile: 
1> stdafx.cpp 
1> asd.cpp 
1>RC : fatal error RC1106: invalid option: -ologo 
1> 
1> 
1>Build FAILED. 
1> 
1>Time Elapsed 00:00:00.56 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

VS2013

的Visual C++ - >的Win32 - > Win32控制台应用程序(向导的第一页上的完成)

1>------ Rebuild All started: Project: ConsoleApplication1, Configuration: Debug Win32 ------ 
1>cl : Command line warning D9002: ignoring unknown option '/sdl' 
1> stdafx.cpp 
1>cl : Command line warning D9002: ignoring unknown option '/sdl' 
1> ConsoleApplication1.cpp 
1>LINK : fatal error LNK1117: syntax error in option 'manifest:embed' 
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 

如果我去属性 - >清单工具 - >输入和输出和变化嵌入清单没有,它的工作原理(以及警告也将消失)

的Visual C++ - > MFC - > MFC应用程序(向导的第一页上的完成)

1>------ Build started: Project: MFCApplication4, Configuration: Debug Win32 ------ 
1>cl : Command line warning D9002: ignoring unknown option '/sdl' 
1> stdafx.cpp 
1>cl : Command line warning D9002: ignoring unknown option '/sdl' 
1> ViewTree.cpp 
1> PropertiesWnd.cpp 
1> OutputWnd.cpp 
1> MFCApplication4View.cpp 
1> MFCApplication4Doc.cpp 
1> MFCApplication4.cpp 
1>c:\users\myusername\documents\visual studio 2013\projects\mfcapplication4\mfcapplication4\mfcapplication4.cpp(39): error C2065: 'm_dwRestartManagerSupportFlags' : undeclared identifier 
1>c:\users\myusername\documents\visual studio 2013\projects\mfcapplication4\mfcapplication4\mfcapplication4.cpp(39): error C2065: 'AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS' : undeclared identifier 
1>c:\users\myusername\documents\visual studio 2013\projects\mfcapplication4\mfcapplication4\mfcapplication4.cpp(49): error C3861: 'SetAppID': identifier not found 
1>c:\users\myusername\documents\visual studio 2013\projects\mfcapplication4\mfcapplication4\mfcapplication4.cpp(86): error C3861: 'EnableTaskbarInteraction': identifier not found 
1> MainFrm.cpp 
1>c:\users\myusername\documents\visual studio 2013\projects\mfcapplication4\mfcapplication4\mainfrm.cpp(351): error C2653: 'CMFCVisualManagerVS2008' : is not a class or namespace name 
1>c:\users\myusername\documents\visual studio 2013\projects\mfcapplication4\mfcapplication4\mainfrm.cpp(356): error C2653: 'CMFCVisualManagerWindows7' : is not a class or namespace name 
1> FileView.cpp 
1> ClassView.cpp 
1> ChildFrm.cpp 
1> Generating Code... 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

如果我配置基于MFC-对话框应用程序(这是我原来的目标),我得到以下错误:

1>------ Build started: Project: MFCApplication3, Configuration: Debug Win32 ------ 
1> stdafx.cpp 
1> MFCApplication3Dlg.cpp 
1> MFCApplication3.cpp 
1> Generating Code... 
1>RC : fatal error RC1106: invalid option: -ologo 
1> 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

不知道是否有帮助,但这里是所有已安装的MS软件的列表: https://skydrive.live.com/redir?resid=5062EFE7E0C8ECCC!2721&authkey=!APk3skYPRCffPWQ&ithint=folder%2c

回答

1

好吧,我找到了自己的解决方案。

与此类似(http://social.msdn.microsoft.com/Forums/de-DE/baf613fc-3b24-4f47-9800-38499965e9dc/vs2010-is-using-a-wrong-compiler-Version)问题,我的“Microsoft.Cpp.Win32.user”属性表包含对vs2008目录的引用。我不知道他们如何到达那里,但删除他们解决了我的问题。

开放查看 - >其他窗口 - >物业经理

Microsoft.Cpp.Win32.user双击

VC++目录

行已改变是大胆的。所有大胆的行,单击文本字段,然后在下拉菜单中选择从父或工程缺省继承

我核实,现在通过编译下面的代码片段使用了正确的编译器:

auto asd = std::make_unique<int>(); 

make_unique已添加VS2013。

任何人都有线索,什么改变了这些值?

+1

很难找,祝贺定位问题。该属性表有点像病毒,只需更改一次,忘记了几年,有一天就会被提醒。当时看起来像一个好主意:) –

+0

好吧,我从来没有编辑过它,我确信... –

1

libwinutils.vcxprojwinutils.vcxproj之间的差异显示了问题。

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />出现在Release|Win32 PropertyGroup之前。

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> 
    <ConfigurationType>Application</ConfigurationType> 
    <UseDebugLibraries>false</UseDebugLibraries> 
    <WholeProgramOptimization>true</WholeProgramOptimization> 
    <CharacterSet>Unicode</CharacterSet> 
    <PlatformToolset>v110</PlatformToolset> 
</PropertyGroup> 

打开winutils.vcxproj,经过Release|Win32的PropertyGroup移动<Import ...>,像下面的话:中

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> 
    <ConfigurationType>Application</ConfigurationType> 
    <UseDebugLibraries>false</UseDebugLibraries> 
    <WholeProgramOptimization>true</WholeProgramOptimization> 
    <CharacterSet>Unicode</CharacterSet> 
    <PlatformToolset>v110</PlatformToolset> 
</PropertyGroup> 
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 

我已经成功地构建winutils Hadoop的2.7.0-SRC与VS2012工具集。

+0

**正确答案imo **在移植使用多个深层嵌套自定义.props的项目时遇到同样的问题,声明平台工具集为绝对第一项,强制vs选择正确的cl.exe/link.exe。最低需要的条目是: ' v123 ' ...无论工具集是什么。可以在.prop或vcxproj中 - 它只是在包含任何默认* .props之前。 –