本人是个新手,但是最近在opencv配置和打包成setup时,遇到了些问题,当时在网上找解决方案,有人提出过问题,但是帖子发了就沉了,几乎没人回答出来。可能是问题并不凸显,遇到的较少,不过为了后人学习方便,我在此做个小结。
错误情况如下:opencv2.4.9这个版本是同学推荐的,据说相对经验贴较多,出了问题好找。VS2013纯属个人下载安装之后,不想再换了,所以采用的这个较高版本,不过个人还是推荐VS2010,还是因为用的人多,经验较多,学习方便。 现在还是回到2013下的配置问题,这个问题,网上一搜就有,百度经验也有http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html,我不多说,但是在一些配置经验上,提到了,不管是64位系统还是32位系统,都选择X86,不选X64,而并没有说明原因。
那么接下来,对上面提到的百度经验里面的配置做个补充,然后说说X64何时用。这个经验贴被转了很多地方,里面有个小问题,我最初配置的时候,完全按照上面所说,结果,刚配置好,没什么问题,因为一直在用debug,没用release,所以问题没有显现出来。当用到release编译时,
出现了如下问题:。我的解决办法是:debug还是如上的配置,但是在配置release时,右击VS的属性管理器里面的Release|win32(Release|x64同理),打开属性,在Release属性页里面的VC++目录里,将 可执行文件目录 中添加D:\Applications\opencv\opencv\build\x86\vc12\bin这个地址,视自己安装目录而定。 也就是说在配置debug和release时,是有这一点区别的,debug中可以不用对可执行文件目录 添加这一路径,但是release必须添加。
其次是到底选择x86还是x64的问题。我的理解和尝试如下:如果你是32位的系统,那么只能选择x86,并且在VS中写好程序,准备debug过release编译(或编译+运行)时,选择如下在解决方案下的源文件的cpp文件上右击,选择属性,
平台选择Win32,这样你编译用的是32位的编译器,并且也是能够在32位的电脑上运行编译出来的exe(前提是程序执行所需要的文件,尤其是各种.dll文件和图片放在一起)。
如果你是64位的系统,那么你在编译时,平台可以选择x64或者Win32,但是,注意,因为网上的帖子有一部分中,在opencv配置的时候,说到了,无论是64位系统还是32位,都选择x86的配置,如库目录:D:\Applications\opencv\opencv\build\x86\vc12\lib,那么,如果当时只配置了debug和release的Win32,此时想用64位的编译器编译,那么必须在VS的属性管理器中对debug和release|x64进行配置, 配置内容和Win32相同,只是在可执行文件目录 和库目录中的添加路径为D:\Applications\opencv\opencv\build\x64\vc12\bin 和D:\Applications\opencv\opencv\build\x64\vc12\lib全部是x64的。
另一个问题是利用VS2013对编好的OPENCV程序打包生成安装软件中遇到的问题,这在下面的文章中介绍。