Caffe學習(八):Windows下編譯及調試Debug版Caffe

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版本編譯及調試完成。

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