以下是我的原创内容,也是我的第一篇博客,转载请注明哦
以下是我这两天安装SurfBox工具箱的一丢丢经验,分享给大家,供大家参考
第一步:准备工作
1.1、我的电脑是win7旗舰版64位,matlab版本是2017b,
(下面这个链接里是matlab2017b的安装包:链接:https://pan.baidu.com/s/19vCSX7vj8t8W7Bfx7qGQ0w 密码:k412
谁要可以拿去,这是BT种子版的用迅雷就可以下载。用迅雷下载完之后是三个文件,如下图所示,最上面的那个压缩文件是破解
用的,下面那两个镜像文件是安装包,用360压缩把那两个镜像文件解压缩得到两个文件夹:R2017b_win64_dvd1和
R2017b_win64_dvd2,将R2017b_win64_dvd2文件夹里的所有文件复制,粘贴到R2017b_win64_dvd1中,总之,就是把
R2017b_win64_dvd1和R2017b_win64_dvd2两个文件夹合并,如果不合并的话,matlab安装到一半会中断)

matlab 2017b 安装破解教程: http://blog.csdn.net/m0_37638031/article/details/78982498
1.2、VS版本是 VS2013_RTM_ULT_CHS
微软官方下载链接:
序列号:BWG7X-J98B3-W34RT-33B3R-JVYW9
1.3、下面的链接是我从mathworks官网上下载的SurfBox工具箱
链接:https://pan.baidu.com/s/1EjWCh4XnXitbMRoYJsavhg 密码:8nqt
下面这个链接是mathworks官方下载地址:
https://cn.mathworks.com/matlabcentral/fileexchange/14485-surfacelet-toolbox?s_tid=gn_loc_drop
下载完SurfBox工具箱之后,我将它解压到 https://www.gofarlic.com\MATLAB2017B\2017B_an_zhuang_lu_jing\toolbox

https://www.gofarlic.com\MATLAB2017B\2017B_an_zhuang_lu_jing 是我的matlab的安装路径,其中的toolbox文件夹里是matlab的工具箱,
因此,我把SurfBox工具箱解压到toolbox文件夹下面。
1.4、fftw库
下面的链接是我下载的fftw库,版本为 fftw-3.3.5-dll64 ,64位的
链接:https://pan.baidu.com/s/1oInk9W3QLByzCcIObUBwgw 密码:65rj
下面的链接是官方下载地址: http://www.fftw.org/download.html
下载时要先看自己电脑是 32 位还是 64 位的,然后下载相应版本的 fftw 库
下载完之后,我把下载的压缩包解压到 https://www.gofarlic.com\MATLAB2017B

第二步:安装“MinGW-w64”
2.1、打开matlab,可以看到这个附加功能

点击“附加功能”——>“获取附加功能”——>“MinGW-w64”如下图所示

2.2、点击“MinGW-w64”,如下图所示,看画圈的部分,我这是安装过“MinGW-w64”了,圈里显示的是“管理”,如果你
没有安装“MinGW-w64”,圈里显示的应该是“安装”,直接点击“安装”,matlab就会自动帮你安装“MinGW-w64”了,
这需要等上几分钟。

等安装好“MinGW-w64”之后,就可以把这个页面关了。
PS:安装“MinGW-w64”时,需要有一个mathworks的一个账号,还要填写一个ID(这个都是自己设的,不需要什么安装序
列呀什么的,自己当初还傻了吧唧的以为要注册序列神马的)你自己根据提示注册就行了。
2.3、测试
在matlab命令窗口输入 mex -setup 回车:(注意 mex 和-setup中间有个空格 )

这说明MinGW-w64已经安装成功。
第三步:生成 .lib 文件
3.1、这一步需要用到VS安装目录里的 lib.exe 文件
我的 VS 安装路径为 https://www.gofarlic.com\Visual_Studio_2013

所以,lib.exe 所在的路径为 https://www.gofarlic.com\Visual_Studio_2013\VC\bin

3.2、找到 .def 文件所在的位置, .def 文件就在1.4节所说的fftw库所在的文件夹https://www.gofarlic.com\MATLAB2017B\fftw-3.3.5-dll64里,如下图:

将这三个 .def 文件复制到 lib.exe 所在的路径 https://www.gofarlic.com\Visual_Studio_2013\VC\bin 里。
3.3、在cmd进入上面提到的bin目录:


此时,再看bin文件夹里,已经生成了 .lib 文件,现在就可以把cmd窗口关了。

3.4、把这三个 . lib 文件复制到fftw库里

第四步:添加 SurfBox 工具箱
4.1、找到 libfftw3-3.dll 、libfftw3f-3.dll 、libfftw3l-3.dll 这三个文件,这三个文件在fftw库里,将它们复制到 SurfBox 文件夹
里:https://www.gofarlic.com\MATLAB2017B\2017B_an_zhuang_lu_jing\toolbox\SurfBox\SurfBox
这也是 mexcompile.m 函数所在的路径
4.2、打开matlab,主页——>设置路径——>添加并包含子文件夹



然后点“保存”——>“关闭”
4.3、工具箱更新 缓存

“预设”——>“常规”——>“启用工具箱路径缓存 打上勾”——>“更新工具箱路径缓存”——>“确定”。
4.4、测试工具箱是否可用
在matlab命令窗口中输入

此时,说明 SurfBox 工具箱可用。
第五步:改写编译 mexcompile 文件
5.1、在matlab命令窗口中输入 open mexcompile 回车



5.2、编译,测试
在matlab命令窗口输入mexcompile,回车

(我运行mexcompile的时候,有错误产生,会在后面说明)
下面来测试 SurfBox 工具箱里的 demo 能否运行,

在matlab命令输入窗口输入:demo_Filters2D 回车


也可以测试其它demo,如果运行成功,就说明 SurfBox 工具箱配置已经全部完成
前面5.2说到,我编译mexcompile文件的时候,出现了一些问题,如下:
1、

可以看到,这个问题出现在mexcompile函数的第120行,
eval(['mex ' 'mex/mexSurfaceletDec.cpp ' SURFSRC ' -I' FFTW_include ...
' -outdir Matlab']);这条语句错在哪儿了呢?我们往上看

这句话是说,函数HourglassFilterBank.cpp第643行的 'memset' 函数并没有被定义,而函数'memset'的 头文件 是
<memory.h> 或 <string.h>,所以,只要将函数 HourglassFilterBank.cpp 的头文件中加上
#include "string.h"即可。
(关于 memset 函数的介绍,百度一下有很多说明,也可以参考以下链接:
http://blog.csdn.net/dan15188387481/article/details/49621447
http://blog.csdn.net/qq_27522735/article/details/53374765
)
有类似错误的,也可以这样解决:
先看错误出在哪儿,是哪个函数没有被定义,然后找到该函数的头文件,将这个头文件加在 调用该函数的 函数开头就行了
比如这个错误,memset 函数没有被定义,头文件是<memory.h> 或 <string.h>,调用 memset 函数的是
HourglassFilterBank.cpp,所以,将
#include "string.h"加在 HourglassFilterBank.cpp开头就行了。
2、运行mexcompile .m文件没有错误的话,查看SurfBox \ matlab 文件夹下有没有 mexSurfaceletDec.mexw64 等三个文件
如果有,说明编译完成。如果此时运行demo中的例子还报“未定义函数或变量”的错误(如下图),按照4.3,再更新一下工具
箱缓存即可。

参考链接:
1、
https://m.baidu.com/from=1012852y/bd_page_type=1/ssid=0/uid=0/pu=usm%402%2Csz%40320_1004%2Cta%40iphone_2_6.0_11_9.3/baiduid=B46F3A3EA6CA10CF0A2D11CF871B7C4D/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=9651792033558679900&order=2&fm=alop&tj=www_normal_2_0_10_title&vit=osres&m=8&srd=1&cltj=cloud_title&asres=1&title=matlab%E9%85%8D%E7%BD%AEsurfbox%E5%B7%A5%E5%85%B7%E7%AE%B1(surfacelet%E5%8F%98%E6%8D%A2)--...&dict=32&w_qd=IlPT2AEptyoA_yimCVGbGiAxww4D1ayjEhaUNq&tcplug=1&sec=28373&di=03243630d4295302&bdenc=1&tch=124.341.258.367.1.404&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IUMLDBXUAQWjc95SjfenaXdNpX8KhVnmKHE_wdoTQsBYGwn7f&eqid=85f20db79635d000100000015aaca4b7&wd=&clk_info=%7B%22srcid%22%3A1599%2C%22tplname%22%3A%22www_normal%22%2C%22t%22%3A1521263813596%2C%22xpath%22%3A%22div-a-h3-em2%22%7D&sfOpen=1
2、 http://brent0541.blog.163.com/blog/static/18509325420119224331765/
3、http://blog.csdn.net/moyumoyu/article/details/7950528 4、 http://blog.csdn.net/shenziheng1/article/details/53147620
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删