vlfeat重编译以及visual studio与matlab联调

Vlfeat重编译包括两个层次:
1. 浅层的可以参考vlfeat官网上关于vl_compile 的介绍:http://www.vlfeat.org/matlab/vl_compile.html;这个函数通过mex函数来重新编译matlab与c++的接口函数,加入调试的方法是在mex函数的参数里面加入’-g’参数,修改方式如下:
在vl_compile()文件中加入下图的第140行:

用这种方式重新编译的时候其他的必须确保其他的c函数已经生成了链接库,这种方式除了能大体分析matlab与C++的接口之外,没什么其他用途。真正想调试进入C++的算法实现需要用makefile重新编译所有的文件,就是下面第二种方式;
2. 官网上对于这种方式有讲解,但是讲的非常简单,http://www.vlfeat.org/compiling-windows.html
实际中由于自己的环境的问题需要修改的地方也不尽相同,下面的这个帖子讲的非常详细:
http://blog.csdn.net/u012211419/article/details/50311807
我自己的环境是windows10:vs2013+matlab2014+vlfeat0.9.20,按照上面的帖子编译成功了,需要注意的地方:
按照自己的环境修改nmakefile.mak
我修改的地方如下:


(如果是win32自行修改50-62行),其他就不用改了
确保自己有makefile.mak中的下列文件:
这里写图片描述
如果没有就下载补上即可;链接: http://www.ilovematlab.cn/thread-298097-1-1.html (matlab2014也好用).
不要用visual studio生成解决方案编译,用visual studio tools里面的本机工具命令提示
vlfeat重编译以及visual studio与matlab联调_第1张图片
如果在里面切换不到你的vlfeat 目录下,将vlfeat移到桌面或者c盘然后再切换(不知道为啥。。);
输入下面的命令就可以编译了:
这里写图片描述
下面再用matlab与VS进行联合调试即可,这里把之前vs与matlab联调的方式也给出来:
1) mex的时候在需要调试的文件编译后边添加-g参数,(这个一般在make.m(matlab的编译文件)里面添加)
2) 在matlab中在调用c函数的地方设置断点;
3) 打开VS,在VC的工具->附加到进程的对话框中选择matlab进程;
4) 在VS中打开需要调试的文件,在需要的地方设置断点,会提示无法调试,不用管这个
5) 回到matlab按F11步进到c函数,此时进程就跳转到了VS中
6) 然后就可以在VS中调试c程序了。
需要注意的是每次修改libsvm的代码之后需要重新make,否则调用的还是原来生成的库。
问题:
Vs中附加到进程的时候出现问题:一直处于加载符号状态,这个是由于加载的目录设置的问题,通过下面的方式修改:
我也遇到同样的问题,但我已经解决了,首先到工具->选项->调试->符号,将Mincrosoft符号服务器前面的勾去掉,再点击清空符号缓存,接着删掉在此目录下缓存符号路径C:\Users\Administrator\AppData\Local\Temp\SymbolCache。成为默认状态“符号缓存目录…”点击确定,重启VS加载项目OK.

你可能感兴趣的:(matlab,C语言,vs,VLFeat)