win7(64bit)/XP(32bit) 配置VS2008+openv2.3.1

WIN7 64位系统  配置 VS2008 + opencv2.3.1

参考:http://wiki.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.3.1

win7 下,安装的VS2008,然后搭配opencv2.3.1运行,报错为:fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突 。

解决方法:重新安装/修复VS2008 选择x64编译器  (注意在win32和x64下为vs编译器设置include和lib)

之后出现这个错误:(win32 debug 与 x64 debug 下错误代码不同)

 

 
解决方法:环境变量没有设置正确,重新设置,分别为win32(x86) 或 x64设置环境变量
 
 按照上述方法,搞定后,win32下的debug和release编译,运行都很正常,但是x64平台下会出现问题!
 
修改好VS编译器头文件和库目录后,将环境变量加入,重启电脑后,仍然报相同错误!

注意的地方是:打开VS2008后,在工具---选项---项目和解决方案---VC++目录中,右侧的的框中,平台选择X64,然后在包含文件和库文件中添加上面文章中所说的目录,但不要直接添加OPENCV2.1下的,而是添加我们编译过的在OPENCV2.1\VC2008中相应的目录,而且是只添加我们编译过生成的那些目录,这些是刚才在X64编译的,如果同时添加的还有OPENCV2.1下的相应目录,要删掉,它们是给WIN32环境所使用的,不删掉的话编译程序时还会报错。

以上情况注意后,应该会成功的。如果没有注意,可能在X64的环境下调试OPENCV时会出现“无法识别的外部符号……,在……函数中引用”等等错误,以前这个问题出现的时候折磨了我好久,头文件和Lib文件等都已经添加,却还是无法识别,原因就是没有经过64位的编译。

总结来说,就是不能用网上编译好的opencv,必须用64位平台编译生成的库!  (这只是根据网上推断,并没有充分验证)
 
 
  于是查找更有说服力的言论http://blog.chinaunix.net/uid-26404201-id-3365000.html   讲解了opencv2.3.1在VS2008和VS2010平台上安装配置图解,虽然过程中提到了在x64平台上的相关配置,但是并没有说明在vs2008下x64平台编译运行opencv2.3.1相关程序正常!
该作者目的直接验证64位程序的编译 (比较具有说服力)
目的:编译64位程序
折腾将近三天的,首先写一下失败的经历:
(1)windowsXP,vs2008,X64编译opencv2.1没能通过,cmake过了,vs2008基于X64平台编译没能通过。
(2)windowsXP,vs2008,X64编译opencv2.3.1,cmake就没能通过。
(3)windowsXP,vs2008,直接使用官方opencv2.3.1中的X64+2008配置,编译自己的程序,没能通过。
(4)win7,vs2008,直接使用官方opencv2.3.1中的X64+2008配置,编译自己的程序,debug下可以编译,不能运行,报错:配置不正确。release下可以编译运行。但不稳定,程序运行中遇到内存分配问题会break掉。
(5)win7,vs2008,X64编译opencv2.3.1,cmake就没能通过。
。。。。。。。。。。。。。。还有许多小的尝试都以失败告终,略。。。
似乎vs2008与win7家庭版不太兼容。
最后成功的解决方案:
win7 + vs2010 + opencv2.3.1(官方直接使用(不用自己编译))
转:http://blog.csdn.net/zackzhaoyang/article/details/6883996

1.先配置环境变量,这一步完成后,注销再登陆或者重启计算机后,环境变量才有用。

    设置方法为:右击计算机打开属性->高级系统设置,高级选项卡->环境变量

用户变量设置:变量:OPENCV,值:E:\opencv\build
                               变量:PATH,值:E:\opencv\build\x86\vc10\bin;E:\opencv\tbb30\bin\ia32\vc10(注意,64位还是选ia32,按32位的配置)
      系统环境变量的path也要添加设置下(以前看教程好似都没有这一步的哦!)
       ;E:\opencv\build\x86\vc10\bin;E:\opencv\tbb30\bin\ia32\vc10(用分号隔开)

2. 开始给以后所有的项目进行配置。
    首先任意新建一个项目,我这里建的是名字为opencv的C++控制台程序。下来的设置比较特别,经过多次搜索才发现这样做最好。
视图->解决方案资源管理器->选择左侧控件下方的”属性管理器”
展开opencv,一直展开看到Microsoft.Cpp.Win32.user,对它右键选择属性。

然后对VC++目录下选项进行添加:(不要忘了前面的分号哦!)
    (1)可执行文件目录:
    ;E:\opencv\build\x86\vc10\bin;E:\opencv\tbb30\bin\intel64\vc10
    (2)Library Directories(库目录)
    ;E:\opencv\build\x86\vc10\lib;E:\opencv\tbb30\lib\intel64\vc10
    (3)Include Directories(包含目录)
E:\opencv\include\opencv;E:\opencv\include\opencv2;E:\opencv\build\include;E:\opencv\tbb30\include
3.下面对单个项目进行配置
    因为是对单个项目配置的,所以以后每生成一个使用OpenCV的项目都需要设置一次,因此保存好下面的路径。
项目->属性->连接器->输入
    在”附加依赖项”中进行添加。先对此界面左上角的”配置”选择上Debug,在附加依赖项中添加:(不要忘记分号哦!)
opencv_core231d.lib;opencv_highgui231d.lib;opencv_video231d.lib;opencv_ml231d.lib;opencv_legacy231d.l
把Debug换成Release(如果问你是否保存,则保存修改),再添加:(不要忘记分号哦!)
opencv_core231.lib;opencv_highgui231.lib;opencv_video231.lib;opencv_ml231.lib;opencv_legacy231.lib;opencv_i
231表示OpenCV的版本为2.3.1,其他版本的只要改下数字即可,VS2005,VS2008配置OpenCV也大同小异,例如2008要把VC10改成VC9等等


另:vs2010建立X64 plantform时要将create new project platforms选上(在property manager中就含有Rlease|X64了,以便设置其属性。否则没有),并copy settings from win32(win32的可执行文件,头文件,包含库的设置就继承过来了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值