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 目錄下,將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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章