
不知怎么本来编译好好的VS2010环境,忽然出现“转换到 COFF 期间失败: 文件无效或损坏”的链接错误。花了好多天,试了好多方法,最终解决了这个问题。
现在罗列一下这几种解决方案:
方案1:
点击“项目”-->“属性” --> “清单工具”,
然后选择"输入和输出’ --> ‘嵌入清单’,将后面的‘是’改成‘否’就可以了
方案2:在VS安装目录搜索cvtresexe
发现有两个cvtresexe文件,有的网友选择用最新的文件覆盖掉所有旧的cvtresexe,
也有网友是删除旧cvtresexe的文件。我是将旧 cvtresexe 改名字了,以备恢复环境。
注意这两个文件都是一个版本号,但是生成时间只是相差1个小时,选择最新的那个。
也有搜索到好多cvtresexe的 情况,这个就不清楚了,试试如何删除这些文件吧。
我的两个文件目录如下:
D:\Program Files (x86)\Microsoft Visual Studio 100\VC\bin\amd64
D:\Program Files (x86)\Microsoft Visual Studio 100\VC\bin
方案3:就是安装新的VS2010 SP1,这种方法也可以解决部分这种问题。
比较麻烦的是这个SP1还比较大,乱七八糟的东西都得补丁上去。
怎么个中断失败?是安装过程中卡死或者黑屏导致无法启动吗?试试开机后,看到Windows 10 Logo,下面有个圆圈在转的时候,数5 秒。然后直接按下电源键关机。对于台式机,如果机箱上有“重启按键”,也可以直接按重启键。
如此重复2~3次,当再次开机的时候,就会进入如下图的界面:
鼠标点击“查看高级修复选项”,即可进入Win10的RE 模式。在Win10的RE模式中的 疑难解答 里,可以让你“重置此电脑”或者“回到上一个系统”。
1重置此电脑
作用:把Windows 10系统全自动的重新安装一次,可以选择是否保留现有的软件,应用和资料。
2回退到以前的版本(在疑难解答的高级选项中)
是指通过“升级”方式,安装win10的,可以直接回到升级前的系统。比如从Win7升级到win10的,回退到 Win7(会保留原有系统的所有软件应用和资料)
您可以自行选择是尝试重新安装一次win10来解决现在的故障,或者放弃Win10返回原来的系统。
问题很简单,无法定位mian函数。这是因为VS2010和VC的新建文件模式不一样,VC是直来直往的,而VS2010则是新建项目a往里面添加CPP文件,如果你直接新建文件bCPP的话,与项目a没有任何关系。此时就是无法定位main函数。main是系统调用接口,因为你新建的文件bCPP不在main里面,无法运行。
软件与Win10不兼容解决办法如下:
第一步:在不兼容的程序上点击右键然后再选择兼容性疑难解答
第二步:正在检测问题,选择故障排除选项尝试建议的设置
第三步:检测到该程序的兼容模式为XX,然后再点击测试程序如果能正常运行,然后再点下一步。
第四步:选择
“是,为此程序保存这些设置”。程序兼容性疑难解答,现在正在检测其他问题。过一会就会修复成功。修复成功后关闭这个窗口以后再打开的时候就是正常的了。
我刚刚安装了VS2010也遇到这个情况,到网上下了个vcredist2010exe安装后就解决问题了你可以按以下步骤 *** 作:
1到网上下载这个文件vcredist2010exe
2到系统目录windows/system32下查看,是否有msvcr100dll文件存在
3如果有,在安装vcredist2010exe是否可以卸载,如果不能卸载,就把第2步中的msvcr100dll文件改个名字,然后继续安装就可以了
4第2步如果文件不存在,那么直接安装vcredist2010exe就可以
希望对你有用
swap(int pointer_1,int pointer_2); //实现的是交换 *** 作
尝试了一下,虽然VC++ 60很老,也对上面这句报错,编译失败,应改为:
swap(pointer_1, pointer_2); //实现的是交换 *** 作
函数定义和声明的时候才需要参数类型,调用的时候不需要,是因为声明与定义的时候已经告诉过编译器pointer_1, pointer_2的类型是int。
至于scanf,在VS 2010中给出是警告,编译运行都是没有问题的。编译器给出警告的意思是告诉你这样做可以,但有出错的风险。具体到本例,就是说scanf不安全,比如:
char buf[5];
scanf("%s",buf);
如果用户执行时输入12345,程序就会将‘1’、‘2’、‘3’、‘4’、‘5’等5个字符和一个0存入buf,可是buf只能存储5个字符,这样buf就溢出了,多出来的字符将在内存中覆盖后续程序代码,使得程序执行时出现奇奇怪怪的行为,或者干脆出现段错误。
鉴于上述原因,微软从vc++2005开始引入scanf_s函数,这样在调用的时候,就需要加入buf长度:
scanf_s("%s", buf, sizeof(buf));
当输入12345时,scanf_s直接给一个0,说明输入超过缓冲区buf的长度,输入无效,如此就不会溢出了。
scanf_s函数现已被C11标准接纳,所以今后尽量用它,而scanf很可能在未来被标准去掉,变为不可用。
VC++ 60在1998年发布,那时还没纳入scanf_s函数,所以用它编译不会出现告警。
以上就是关于vs2010程序运行出错 link : fatal error lnk1123: 转换到 coff 期间失败: 文件无效或损坏全部的内容,包括:vs2010程序运行出错 link : fatal error lnk1123: 转换到 coff 期间失败: 文件无效或损坏、win10系统安装VS2010,运行失败、我用vs2010编写的程序,为什么总是运行失败等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)