写在前面:本博文是在我现有知识状态下写的, 我现在是小白, 有错误欢迎指正。 以后假如接触到更合理的见解, 我一定会修正这篇博文的。
本文原是在我本地笔记中待着的, 写于2016/05/17。

下载了OpenCV的Windows的安装版文件,运行该可执行程序将OpenCV解压到某个位置,设置好OpenCV相关的环境变量并重启,接下来可以配置Visual Studio里面的属性,检查配置无误,然后开始编写cpp来测试OpenCV环境搭建的最终结果,可是出现了下面的错误:

错误描述:
>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

现象解释:
这个错误比较少见,因为往往做了某些事情的电脑才会出现这个错误,这个事件很大概率上是:电脑上先装了Visual Studio 2010,在没卸载2010的情况下安装了Visual Studio 2012,之后又把Visual Studio 2012删除了,只用Visual Studio 2010这个版本。

原因解释:
我电脑Windows 7 x64系统,没安装Visual Studio 2010之前,电脑上的.net framework仅有3.5版本,安装Visual Studio 2010时安装了.net framework 4.0,再当安装VS2012之后,.net
framework 4.0会被替换为.net framework 4.5。 卸载VS2012时,.net framework 4.5不会被卸载。   之后紧接着又装上了Visual Studio 2010,它会安装.net framework 4.0,这导致了系统里面.net framework是4.5,VS2010里面.net framework是4.0。具体到文件上,就是cvtres.exe这个程序出现了两个版本的。

说的再清楚点就是C:\Windows\Microsoft.NET\Framework\v4.0.30319下的cvtres.exe(其对应.net framework 4.5), 跟(vs2010安装的位置)...\Microsoft Visual Studio 10.0\VC\bin下的cvtres.exe (其对应.net framework 4.0)产生了冲突。
当VS中程序运行时,VS不知道要用哪个cvtres.exe,导致了错误。

解决:
$约定$      C:\Windows\Microsoft.NET\Framework\v4.0.30319 目录 为  $系统目录$
           (vs2010安装的位置)...\Microsoft Visual Studio 10.0\VC\bin  为  $VS目录$



1、将$系统目录$下的.net framework 4.5更改为4.0,就是卸载.net framework 4.5这个环境包再安装上.net framework 4.0。  这个方法是将$系统目录$下的.net framework版本(版本为4.5)向$VS目录$里的.net
frameword版本(版本为4.0)看齐。
2、一个暴力方法让VS2010使用.net framework 4.5的cvtres.exe程序  把VS2010里面的.net framework 4.0的cvtres.exe程序给损坏掉使之无效。具体的说就是重命名或删除$VS目录$下的cvtres.exe,这样$系统目录$中的cvtres.exe文件就可以被VS2010使用。

3、类似于方法二,也是要使用.net framework 4.5 版本, 但是这里走常规路线, 不搞破坏。   安装VS2010 SP1,它会安装.NET 4.5(也就是把$VS目录$下的.net framework版本变为4.5),这样就非暴力的解决了$系统目录$和$VS目录$下.net
framework版本的冲突。

注意:安装VS 2010 SP1 时会移除64-bit 编译器,通过安装 VS 2010 SP1 compiler pack 能够重新获得。
 

多版本VisualStudio导致的.net版本问题的更多相关文章

  1. angular.js使用ui-router注入报错,这里是版本问题导致的

    报错如下: common.ts:604Uncaught SyntaxError: Unexpected token ) stateEvents.ts:211Uncaught SyntaxError: ...

  2. 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问

    记录一个耽误30分钟的一个坑: 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问 报404错误

  3. as版本切换导致项目损坏,无法启动。环境依赖混乱

    以下方法都不管用, 新建一个项目setting的 把main拷过去就行了!!!! Error:(5, 0) Gradle DSL method not found: 'google()'Possibl ...

  4. zookeeper 版本不一致导致不断重连

    在使用kafka 和zookeeper 实现实时分析程序时,由于zookeeper部署版本和分析程序导入jar包的版本不一致,导致了当实时分析程序从远程服务器连接kafka集群的zookeeper时报 ...

  5. centos7安装Python3的过程中会和Python2.7版本冲突导致yum版本比对应,致使yum不能使用的问题。

    centos7安装Python3的过程中会和Python2.7版本冲突导致yum版本比对应,致使yum不能使用的问题. 原因:yum调用Python,启动程/usr/bin/yum就是一个python ...

  6. oracle:数据库版本问题导致的bug

    公司开发出来的系统,由于各现场oracle数据库版本有10.2.0.4.11.2.0.1.11.2.0.3.11.2.0.4: 进而会导致版本不一导致错误问题.下面列举2个: 1.wm_concat ...

  7. thrift 版本不一致导致 @Override 报错

    thrift 版本不一致导致 @Override 报错 学习了:http://blog.csdn.net/antony1776/article/details/78920888 版本不一致导致的: 在 ...

  8. ride.py在运行python3.×版本后导致无法运行及解决办法

    最近一直在自学python自动化,网上看到rf框架挺适合初学自动化测试,于是通过虫师的搭建了rf框架, 但是在使用过程中遇到了一个问题,在网上没有找到明确解决办法于是想到记录一下 之前为了搭建rf框架 ...

  9. Maven版本问题导致的 unable to import maven project, see logs for details. 问题

    新电脑安装了基础环境后,jdk,maven也都安装好了,idea安装后,导入Java项目一切正常,但是idea中code一直导入import依赖包出现问题,错误提示:unable to import ...

随机推荐

  1. 用iptables 做NAT代理上网

    背景:有一台A服务器不能上网,和B服务器通过内网来连接,B服务器可以上网,要实现A服务器也可以上网. 内网主机: A eth1:172.16.1.8 外网主机: B eth0:10.0.0.61外网主 ...

  2. Android 开发笔记___初级控件之实战__计算器

    功能简单,实现并不难,对于初学者可以总和了解初级控件的基本使用. 用到的知识点如下: 线性布局 LinearLayout:整体界面是从上往下的,因此需要垂直方向的linearlayout:下面每行四个 ...

  3. asp.net core 开发的https证书服务-agilelabs.net

    创建证书-生成CSR(Certificate Sign Request): 填写证书基本信息 接下来我们就可以看到创建的证书签名请求信息(CSR): 为我们刚才创建的CSR签名: 签名的意思是说通过证 ...

  4. css 选择器和优先级

    css样式是做网页时,页面 布局不可或缺的关键点.但是在做网页时,会遇到一些明明已经设置了样式的元素,缺无法达到想要的效果,这种情况比较常见.这就涉及到优先级的问题了 要说到css的优先级,先来看下c ...

  5. 数据库之Oracle——初级

    世上岂无千里马,人中难得九方皋: 酒船鱼网归来是,花落故溪深一篙. 关于数据库的第一篇博客,这是我的第二次,人生第二春,什么也不想说,静静的开始吧,至于为什么写唐诗,请看第一篇文章! Oracle 初 ...

  6. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  7. R学习笔记 第五篇:字符串操作

    文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符,函数nchar用于获得字符串中的字符数量: > s='read' > nc ...

  8. Linux命令kill和signal

    Linux命令kill和signal kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令.通常,我们在需要终止某个或某些进程时,先使用 ...

  9. cgg之字面值

    字面值时源代码中用来描述固定值的记号,可能是整数.浮点数.字符或者字符串 2.1 整数常量 除了常见的十进制数外,还有八进制(以数字0开头)或者十六进制(0x/0X)表示法. #include < ...

  10. 如何优化Cocos2d-X游戏的内存

    在游戏项目优化中都会碰到一个问题,如何既能减少内存又能尽量减少包的大小?在实际项目中有些经验分享一下,事实上2D游戏中最占内存的就是图片资源,一张图片使用不同的纹理格式带来的性能差异巨大,下表是我在I ...