一、工具准备
1)到官网下载vlfeat,我的是lfeat-0.9.20 ,选择 VLFeat 0.9.20 source code only 这个。
网址:http://www.vlfeat.org/download.html
解压后如下图所示:
二、修改环境配置
我的系统环境是:Windows 10 X64 Visual studio 2013 X86 Matlab 2015b X64
解压后里面有个vlfeat.sln文件,直接用VS2013,打开显示出错,提示找不到vlfeat.vcproj这个文件。
1)修改Makefile.mak 文件
官网上有说怎么去重新编译,使新生成的文件匹配系统,但说的很简单。且容易误导
比如 你想直接用VL_compile 编译得到Matlab Mex 文件,在Windows 10 下 如无意外一般会提示你缺少VL.dll这个文件,即使你补充了VL.dll,依然会报错。
正确应该是先用VS2013编译。
官网只有简单的一句:
you must edit Makefile.mak to adjust the values of a number of configuration variables to match your setup
如果你直接用系统自带的text 工具打开是这样的,见下图:
看着就晕,怎么改。
正解是用Sublime Text 来打开
这样看起来就清晰很多了。
找到这几个东西:
VER = 0.9.20 (vlfeat 版本号)
ARCH = win64 (是64位还是32位,看自己的系统,32位的改win32)
DEBUG = no (用debug 的话 ,改成yes)
BRANCH = v$(VER)-$(ARCH) (我的没有修改这句话)
MSVSVER = (VS版本号,VS2013,填的是120)
MSVCROOT = $(VCINSTALLDIR) (VS 安装路径)
WINSDKROOT = $(WINDOWSSDKDIR) (SDK安装路径)
分别改成你自己的系统环境后如下。
VER = 0.9.20
ARCH = win64
DEBUG = yes
BRANCH = v$(VER)-$(ARCH)
MSVSVER =120
MSVCROOT = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
WINSDKROOT = C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1
后面还有需要修改的地方,完整的修改好的Makefile.mak和相应的文件,我会上传到CSDN,需要点积分,
这么详细,可节省你不少时间,也不过分。
编辑Makefile.mak 文件这是最重要的一步,错了,后面就没必要再搞了。
2)用VS命令行编译vlfeat
这一步到了官网说的:
$ nmake /f Makefile.mak # for the Windows 64 target
$ nmake /f Makefile.mak ARCH=win32 # for the Windows 32 target
具体怎么做呢,还需要做一个准备。
把这两个文件放到这个路径下:C:\Program Files\MATLAB\R2015b\bin\win64\mexopts
具体参考自己Matlab 的安装路径。
下面就可以用VS命令行开始执行
$ nmake /f Makefile.mak # for the Windows 64 target
这句语句了。
@1 在 这个路径下找 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts
@2 在开始菜单里面找到VS的安装文件夹,打开Visual Studio Tools
找到 VS2013 x64 本机工具命令提示
点击打开是这样的:
然后用命令行打开你vlfeat 的下载位置
输入:cd C:\Users\CodeMing\Desktop\vlfeat-0.9.20\vlfeat-0.9.20
这时就显示你的vlfeat的安装路径:
这时输入:nmake /f Makefile.mak
就开始编译了。静待编译成功吧。
直到出现 这句: C:\Users\CodeMing\Desktop\vlfeat-0.9.20\vlfeat-0.9.20> 表明编译成功了。
打开toobox - > mex文件夹:出现 mexw64 这些文件了。这时可以用这些文件在Matab上面用了。
三、这时才用 VL_compile 编译得到Matlab Mex 文件。其实上一步已经得到mexw64
当然这一步为了安全:
在Matlab 命令行窗口输入 mex -setup 选择你的编译器,最好对应上面的编译器,如VS2013
@1 把vlfeat 加载matlab路径 @2 把在matlab里面把图了颜色的文件夹和它们的子文件夹都添加到路径下
@3 在toolbox 里面,找到 VL_compile ,点击运行。等Matlab 编译,没意外。很快就编译完成了
已知问题:
1)注意:不要放在中文路径下,VS编译时调用的Matlab识别不了中文路径。
2)类型不匹配如X64与X86,模块计算机类型“X86”与目标计算机类型 “x64”冲突。这个问题还没有很好的解决。
C:\Users\#####\AppData\Local\Temp\mex_iD8uHD\vl_aib.obj : fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型 “x64”冲突
C:\PROGRA~1\MATLAB\R2015B\BIN\MEX.PL: Error: Link of 'C:\Users\#####\Desktop\vlfeat-0.9.20\vlfeat-0.9.20\toolbox\mex\mexw64\vl_aib.mexw64' failed.
NMAKE : fatal error U1077: “echo”: 返回代码“0xffffffff”
Stop.
文件下载:
http://download.csdn.net/detail/u012211419/9356747
上面这个被csdn调整下载分值了,从默认的5分调整为了48分,用下面这个链接下载吧,还是默认值5分,想改成1分都不行
https://download.csdn.net/download/u012211419/11056016
转载需说明