Windows 10 下 VS2013 和 matlab2015b 编译 vlfeat-0.9.20 图文详细版

来源:互联网 发布:口碑和淘宝外卖一样么 编辑:程序博客网 时间:2024/06/13 13:06
一、工具准备
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

转载需说明

0 0
原创粉丝点击