(求救)VS2012和2010编译器问题,各问大神走过路过,帮帮忙!

先说明一下情况:
之前一直用VS2010专业版,知道昨天才换了VS2012旗舰版,同时也保留了之前的VS2010专业版,然后就用VS2012打开之前做的一个Windows窗体应用程序(之前可以编译通过,并能正常运行)的解决方案,没有任何修改,直接按下F7编译,出现如下错误:
CoreResGen:
1> 没有相对于源文件而言已过期的资源。正在跳过资源生成操作。
1>ResourceCompile:
1> 所有输出均为最新。
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
1>
1>生成失败。
1>
1>已用时间 00:00:10.23
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
我想可能是VS2012编译器的问题,就用VS2010再打开这个解决方案,也出现了如上问题,我就????了,明明安装VS2012之前还没任何问题啊?各问大神走过路过,停下脚步,帮个忙,小弟不胜感激!

第1个回答  2013-04-01
VS2010和VS2012或者sv2008和VS2010,高版本VS编译都会出现,使用VS2008的D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下的cvtres.exe替换到VS2010版本VS目录下再编译成功。
如果不行再用以下操作
上网搜索发现是嵌入清单的问题,于是对该工程以及所有依赖工程进行如下操作右键->工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]
VS2010 2012CLR更换NET版本不像C#可以项目属性直接更改,需要修改 *.vcxproj里面 <PropertyGroup Label="Globals">节点添加以下内容
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
VS2012使用VS2010编译vc++项目以支持XP系统运行,项目属性 常规平台工具集选择Visual Studio 2010 (v100),必须同时安装VS2010 2012追问

第二种方法:“VS2010 2012CLR更换NET版本不像C#可以项目属性直接更改,需要修改 *.vcxproj里面 节点添加以下内容
v2.0”
我找到了*vcxproj文件,但是打开后不知道怎么修改!请您具体说一下,谢谢!

追答

这样说吧。
第一种:不太好!
VS2010和VS2012或者sv2008和VS2010,高版本VS编译都会出现,使用VS2008的D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下的cvtres.exe替换到VS2010版本VS目录下再编译成功。
如果不行再用以下操作
第二种:最好的方法!
上网搜索发现是嵌入清单的问题,于是对该工程以及所有依赖工程进行如下操作右键->工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]
第三种:如果前两者都失败,试试第三种:
VS2010 2012CLR更换NET版本不像C#可以项目属性直接更改,需要修改 *.vcxproj里面 节点添加以下内容
v2.0
VS2012使用VS2010编译vc++项目以支持XP系统运行,项目属性 常规平台工具集选择Visual Studio 2010 (v100),必须同时安装VS2010 2012

这个目标Framework版本号,改成v3.0,v3.5,v4.0试试。如果前面的方法 可以就先不要改这个目标Framework版本号!
如果有需要你看看MSDN文章Multi-Targeting 相关的文章!

追问

我打了VS2010.SP1的补丁之后恢复正常了,虽然没用上你的办法,但还是谢谢你!

本回答被提问者采纳
相似回答