对vs2010和vs2013分别配置不同版本的opencv

win7 64位+vs2010/opencv2.4.10+vs2013/opencv2.4.13配置过程:

先安装vs2010和vs2013后,对vs2010配置opencv2.4.10,配置过程比较简单,网上资料很多。不过要注意的是,配置完使用测试代码的时候,会出现:LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 的问题,基本上每一次使用vs2010都会出现。解决方案是:在vs2010工程界面内,(菜单栏)项目->属性页->配置属性->清单工具->输入和输出->嵌入清单改为否,就可以解决了。

第二步,对vs2013配置opencv2.4.13,配置过程基本同上。

第三步,让不同版本的vs选择不同版本的opencv,因为通过属性管理器配置的opencv是vs2010和vs2013所公用的。所以vs2013测试时同样使用的opencv2.4.10(x86,vc10),这里会导致出现内存错误。这里我们需要先找到公用的配置文件(C:\Users\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props,主要是红色部分)我们在这里对其直接进行修改。(注意!修改之前建议对该文件进行备份!)对Microsoft.Cpp.Win32.user.props文件右键以记事本的方式打开,直接修改其代码,如下: 

< ? xml version = "1.0" encoding = "utf-8" ? >
<Project DefaultTargets = "Build" ToolsVersion = "12.0" xmlns = "http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label = "PropertySheets">
< / ImportGroup>

<PropertyGroup>
<ExecutablePath Condition = "$(PlatformToolsetVersion)=='100'">D:\OpenCV2.4.10\build\x86\vc10\bin; $(ExecutablePath) < / ExecutablePath >
<ExecutablePath Condition = "$(PlatformToolsetVersion)=='120'">D:\opencv2.4.13\build\x86\vc12\bin; $(ExecutablePath) < / ExecutablePath >
< / PropertyGroup>

<PropertyGroup>
<IncludePath Condition = "$(PlatformToolsetVersion)=='100'">D:\OpenCV2.4.10\build\include; D:\OpenCV2.4.10\build\include\opencv; D:\OpenCV2.4.10\build\include\opencv2; $(IncludePath) < / IncludePath >
<IncludePath Condition = "$(PlatformToolsetVersion)=='120'">D:\opencv2.4.13\build\include\opencv2; D:\opencv2.4.13\build\include\opencv; D:\opencv2.4.13\build\include; $(IncludePath) < / IncludePath >
< / PropertyGroup>



<PropertyGroup>
<LibraryPath Condition = "$(PlatformToolsetVersion)=='100'">D:\OpenCV2.4.10\build\x86\vc10\lib; $(LibraryPath) < / LibraryPath >
<LibraryPath Condition = "$(PlatformToolsetVersion)=='120'">D:\opencv2.4.13\build\x86\vc12\lib; $(LibraryPath) < / LibraryPath >
<EmbedManifest>true< / EmbedManifest>
< / PropertyGroup>

<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>opencv_imgproc2410d.lib; opencv_calib3d2410d.lib; opencv_contrib2410d.lib; opencv_core2410d.lib; opencv_features2d2410d.lib; opencv_flann2410d.lib; opencv_gpu2410d.lib; opencv_highgui2410d.lib; opencv_legacy2410d.lib; opencv_ml2410d.lib; opencv_nonfree2410d.lib; opencv_objdetect2410d.lib; opencv_ocl2410d.lib; opencv_photo2410d.lib; opencv_stitching2410d.lib; opencv_superres2410d.lib; opencv_ts2410d.lib; opencv_video2410d.lib; opencv_videostab2410d.lib; opencv_objdetect2410.lib; opencv_ts2410.lib; opencv_video2410.lib; opencv_nonfree2410.lib; opencv_ocl2410.lib; opencv_photo2410.lib; opencv_stitching2410.lib; opencv_superres2410.lib; opencv_videostab2410.lib; opencv_calib3d2410.lib; opencv_contrib2410.lib; opencv_core2410.lib; opencv_features2d2410.lib; opencv_flann2410.lib; opencv_gpu2410.lib; opencv_highgui2410.lib; opencv_imgproc2410.lib; opencv_legacy2410.lib; opencv_ml2410.lib; % (AdditionalDependencies) < / AdditionalDependencies >
<AdditionalDependencies Condition = "$(PlatformToolsetVersion)=='120'">opencv_calib3d2413d.lib; opencv_contrib2413d.lib; opencv_core2413d.lib; opencv_features2d2413d.lib; opencv_flann2413d.lib; opencv_gpu2413d.lib; opencv_highgui2413d.lib; opencv_imgproc2413d.lib; opencv_legacy2413d.lib; opencv_ml2413d.lib; opencv_nonfree2413d.lib; opencv_objdetect2413d.lib; opencv_ocl2413d.lib; opencv_photo2413d.lib; opencv_stitching2413d.lib; opencv_superres2413d.lib; opencv_ts2413d.lib; opencv_video2413d.lib; opencv_videostab2413d.lib; opencv_objdetect2413.lib; opencv_ts2413.lib; opencv_video2413.lib; opencv_nonfree2413.lib; opencv_ocl2413.lib; opencv_photo2413.lib; opencv_stitching2413.lib; opencv_superres2413.lib; opencv_videostab2413.lib; opencv_calib3d2413.lib; opencv_contrib2413.lib; opencv_core2413.lib; opencv_features2d2413.lib; opencv_flann2413.lib; opencv_gpu2413.lib; opencv_highgui2413.lib; opencv_imgproc2413.lib; opencv_legacy2413.lib; opencv_ml2413.lib; % (AdditionalDependencies) < / AdditionalDependencies >
<AdditionalLibraryDirectories Condition = "$(PlatformToolsetVersion)=='100'">D:\OpenCV2.4.10\build\x86\vc10\lib; % (AdditionalLibraryDirectories) < / AdditionalLibraryDirectories >
<AdditionalLibraryDirectories Condition = "$(PlatformToolsetVersion)=='120'">D:\opencv2.4.13\build\x86\vc12\lib; % (AdditionalLibraryDirectories)< / AdditionalLibraryDirectories>
< / Link>
<ClCompile>
<AdditionalIncludeDirectories> % (AdditionalIncludeDirectories)< / AdditionalIncludeDirectories>
< / ClCompile>
< / ItemDefinitionGroup>
<ItemGroup / >
< / Project>

需要注意的是<Condition = "$(PlatformToolsetVersion)=='100'">代表的就是vs2010,120则是vs2013。

到这里就配置完了,现在返回去对vs2010和vs2013分别进行测试,vs2010测试通过了,vs2013可能发生错误,缺少opencv_core2413d.dll,这里的解决方法是将D:\opencv2.4.13\build\x86\vc12\bin文件下的所有程序复制粘贴到C:\Windows\SysWOW64中即可。

_CrtIsValidHeapPointer(pUserData),代号为1322,错误是如何解决的

vs如果使用了错误的opencv版本就会出现该错误,一直以为是指针或者堆的释放出现了问题,找不出来原因。后来发现出现这个问题的原因是运行程序时,vs2013使用的是opencv2.4.10 x86中vc10的dll文件(应该使用vc12中的dll文件)。最终解决该问题的方法就是通过上面的步骤将vs2010和vs2013正确配置,使其使用不同的opencv版本即可。

 

参考文献

VS2010和VS2012在Microsoft.Cpp.Win32.user中设置VC++目录冲突的解决(https://blog.csdn.net/txh0001/article/details/51499931

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值