Caffe 版本:https://github.com/Microsoft/caffe
前期Caffe安裝及Release版編譯步驟參考:
https://blog.csdn.net/AManFromEarth/article/details/80212554
https://blog.csdn.net/zh8706/article/details/94553421
1. 檢查工程所缺依賴文件
下面要在VS2013下編譯Debug版Caffe。
我們注意到在Release模式下編譯Caffe,會在caffe-master所在的目錄下創建NugetPackages目錄,包含了編譯Release版Caffe所需要的工具包,如下:
在VS2013中切換爲Debug x64模式,編譯libCaffe或者Caffe工程,會報"error MSB4062: 未能從程序集..."及"error : NuGet Error:未知命令:“overlay”的錯誤,如下:
在這裏需要特別說明下,在Release模式下編譯時可能也會出現這個錯誤,這個問題的原因是Caffe編譯過程中VS的NuGet程序包管理工具會下載工程所需要的程序包文件,但有時候卻下載不全,就出現這個錯誤。所以在Release模式下,如果都編譯成功了,就表示所依賴的工具包是完整下載的,沒有缺漏,所以最好備份一下整個NugetPackages文件夾。
但是即使我們在Release模式下編譯成功,切換到Debug模式下依然還是會報以上錯誤的,原因就是NuGet無法下載Debug版本的工具包,這裏所缺的工具包有兩個:glog.0.3.3.0與OpenCV.2.4.11的Debug版本dll及lib文件
NugetPackages\glog.0.3.3.0\build\native\bin\x64\v120目錄下缺Debug版本dll文件
NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120目錄下缺Debug版本lib文件
NugetPackages\OpenCV.2.4.11\build\native\bin\x64\v120目錄下缺Debug版本dll文件
NugetPackages\OpenCV.2.4.11\build\native\lib\x64\v120目錄下缺Debug版本lib文件
既然NuGet沒法幫我們下載(源端估計也沒有提供)Debug版本文件,那我們只能自己下載。
2. 編譯生成glog
到這裏https://github.com/google/glog/releases/tag/v0.3.3 下載glog0.3.3,下載後使用VS2013打開google-glog.sln文件,切換到Debug x64平臺
對libglog右鍵--生成,會報以下錯誤:
這裏有兩個錯誤,一個是error C2039: “min”: 不是“std”的,解決方法是:在logging.cc中添加頭文件,即加上 #include <algorithm>
還有一個錯誤是logging_fail函數中用到了彙編代碼,但在x64模式下,VS是不支持彙編代碼的。
在這裏我們用最簡單的解決方式,即將_asm int 3一行 註釋掉即可,有興趣的朋友也可以查查_asm int 3有什麼作用。
然後再重新生成libglog,即生成成功。
將glog-0.3.3\x64\Debug下的dll文件拷貝到到NugetPackages\glog.0.3.3.0\build\native\bin\x64\v120\Debug\dynamic
將glog-0.3.3\x64\Debug下的lib文件拷貝到NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Debug\dynamic
3. 下載OpenCV 2.4.11
到這裏https://opencv.org/releases/page/4/下載OpenCV2.4.11.exe,下載後雙擊運行解壓,
將opencv\build\x64\vc12\bin目錄下的*d.dll結尾的dll文件全部拷貝到NugetPackages\OpenCV.2.4.11\build\native\bin\x64\v120\Debug
將opencv\build\x64\vc12\lib目錄下的*d.lib結尾的lib文件全部拷貝到NugetPackages\OpenCV.2.4.11\build\native\lib\x64\v120\Debug
至此Debug x64模式下Caffe所缺的文件已經齊全,再次編譯libcaffe及caffe均可編譯成功,如下:
4. 調試Caffe
下面我們以caffe中的mnist樣例爲例調試caffe。
在VS中將caffe設爲啓動項目,並右鍵——屬性——調試,設置如下:
點擊VS工具欄中的開始調試,但彈出了以下錯誤:
解決方法:
找到caffe-master\Build\x64\Debug目錄下的libgflags-debug.dll文件,將其重命名爲libgflags.dll即可。
再次調試,成功命中caffe入口main函數斷點:
也出現了mnist訓練的過程記錄日誌:
至此,caffe debug版本編譯及調試完成。