以下是我的原创内容,也是我的第一篇博客,转载请注明哦
以下是我这两天安装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工具箱之后,我将它解压到 D:\MATLAB2017B\2017B_an_zhuang_lu_jing\toolbox
D:\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 库
下载完之后,我把下载的压缩包解压到 D:\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 安装路径为 D:\Visual_Studio_2013
所以,lib.exe 所在的路径为 D:\Visual_Studio_2013\VC\bin
3.2、找到 .def 文件所在的位置, .def 文件就在1.4节所说的fftw库所在的文件夹D:\MATLAB2017B\fftw-3.3.5-dll64里,如下图:
将这三个 .def 文件复制到 lib.exe 所在的路径 D:\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 文件夹
里:D:\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 函数的介绍,百度一下有很多说明,也可以参考以下链接:
)
有类似错误的,也可以这样解决:
先看错误出在哪儿,是哪个函数没有被定义,然后找到该函数的头文件,将这个头文件加在 调用该函数的 函数开头就行了
比如这个错误,memset 函数没有被定义,头文件是<memory.h> 或 <string.h>,调用 memset 函数的是
HourglassFilterBank.cpp,所以,将
#include "string.h"加在 HourglassFilterBank.cpp开头就行了。
2、运行mexcompile .m文件没有错误的话,查看SurfBox \ matlab 文件夹下有没有 mexSurfaceletDec.mexw64 等三个文件
如果有,说明编译完成。如果此时运行demo中的例子还报“未定义函数或变量”的错误(如下图),按照4.3,再更新一下工具
箱缓存即可。
参考链接:
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