在VS2008 +MATLAB2014配置下编译TLD中compile文件

来源:互联网 发布:nginx 新手配置 编辑:程序博客网 时间:2024/06/07 22:23

本人非计算机专业,对于软件的安装与配置一直处于傻瓜式操作状态,几乎每次都是在谷歌的帮助下完成任务;首先声明本人电脑里安装了VS2008,OpenCV2.0 和MatLab2014;

1.       买台新电脑,商城预装的破解版的64位win7系统;

2.       回来装了matlab后要编译一些TLD中cpp文件为mex文件,即需要先运行TLD中的compile文件;

3.       运行compile文件老是不成功;

4.       然后mex-setup命令,又是提示错误,还让查阅相关网址;

          http://www.mathworks.com/support/solutions/data/1-5C27B9.html?solution=1-5C27B9  

5.       在谷歌里面搜“mex -setup”win64错误,似乎是说64位的matlab没有自动携带编译器,要自己安装才行;

6.       打开提示的网址,迷迷糊糊地一路点下去似乎安装了个东西,不晓得是什么;

7.       然后再在命令行窗口里输入"mex -setup" 又出错,提示的说法似乎是说,"SDK7.1似乎已经安装了,但是还是找不到编译器;建议先安装.Net4.0,然后再一次安装SDK wizard";

这一次有点明白了,似乎SDK7.1关系着一个编译器,而安装SDK之前要安装.Net 4.0,想到在第6步安装的时候有许多选项没打勾 应该是这个原因;可是再一次安装4步中的网址指示安装时那个选项框再也不弹出来了;

8.       于是手动搜索下载.Net4.0并安装;然后手动下载winsdk_web.exe,并安装;

9.       安装完之后果然再一次运行 mex -setup时会提示所用的语言 “C++ or Python;

10.    但是运行程序中的compile仍然出错;就是说什么unresolved cvReleaseImage之类的;

11.    在想,SDK编译器没见过,是不是需要使用VS编译器啊?于是在谷歌搜“matlab 64 vs 编译器”,从一些回答可以看出是因为VS在安装的时候没有选择安装64位编译器,拯救的办法是在"控制面板下-程序和功能"下,找到VS2008,然后点击上方的“删除/更改”,在后来的界面中选择  "Add or Remove Features"那个,下一步,在Language Tools/Visual C++/X64 compilers and Tools前打钩,然后点击“updae”按钮就会自动完成更新,需要注意的是这个时候还是需要VS原来的安装文件的;

12.    安装完成后,再在matlab命令窗中运行 mex -setup 命令 果然提示了VS2008编译器, 按照提示分别运行了如下三条命令, 

          mex -setup:C:\Users\lenovo\AppData\Roaming\MathWorks\MATLAB\R2014a\mex_C_win64.xmlC

          mex -setup C++

          mex -setup:'C:\ProgramFiles\MATLAB\R2014a\bin\win64\mexopts\msvcpp2008.xml' C++

13.    接着再次运行compile,仍然是提示上述找不到cvReleaseImage之类的提示,所以想是不是因为opencv版本的问题呢,可是像cvReleaseImage这么基础的函数在两个版本之间是没区别的啊?

14.    决定下载个作者所用的opencv版本,后来查看别人发给我的一个关于此程序的compile文件,他的里面是指明了所用的库是64位的(其中有64位的也有32位的),

突然觉得应该是因为在compile时所依赖的库都是基于32位编译器的关系,因此下载了OpenCV 2.4.3,使用了build目录下的include文件夹和x64文件夹下的库文件来帮助编译,如下

include = ' -IC:\opencv\build\include\-IC:\opencv\build\include\opencv\ -IC:\opencv\build\include\opencv2';

        libpath = 'C:\opencv\build\x64\vc9\lib\';

        这一次果真编译成功了。

15.    哎,没有点基本常识真的很可怕,明明就是64位matlab 编译时依赖于64位编译器所编译得来的库,很简单的道理,可是不懂的人真的只能是一个个试了 费去好多功夫;

16.    这是又在想 VS编译器和SDK编译器的选择有关系吗?所以又换回了SDK编译器,这次还是成功了;看来主要是因为原来在compile时候的所依赖的.lib库文件不合格;

17.    运行run_TLD.m文件仍然出错 似乎是在运行lk(0)时出错的;思考了一会,觉得应该是没有把opencv2.4.3/build下相关的bin路径加入环境变量path中,于是这样做了之后,重启电脑,再运行run_TLD.m果然成功;

 

   

  

      

 

 

 

0 0