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所需要的工具包,如下:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第1张图片

在VS2013中切换为Debug x64模式,编译libCaffe或者Caffe工程,会报"error MSB4062: 未能从程序集..."及"error : NuGet Error:未知命令:“overlay”的错误,如下:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第2张图片

在这里需要特别说明下,在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平台

Caffe学习(八):Windows下编译及调试Debug版Caffe_第3张图片

对libglog右键--生成,会报以下错误:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第4张图片

这里有两个错误,一个是error C2039: “min”: 不是“std”的,解决方法是:在logging.cc中添加头文件,即加上 #include

还有一个错误是logging_fail函数中用到了汇编代码,但在x64模式下,VS是不支持汇编代码的。

Caffe学习(八):Windows下编译及调试Debug版Caffe_第5张图片

在这里我们用最简单的解决方式,即将_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均可编译成功,如下:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第6张图片

4. 调试Caffe

下面我们以caffe中的mnist样例为例调试caffe。

在VS中将caffe设为启动项目,并右键——属性——调试,设置如下:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第7张图片

点击VS工具栏中的开始调试,但弹出了以下错误:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第8张图片

 解决方法:

找到caffe-master\Build\x64\Debug目录下的libgflags-debug.dll文件,将其重命名为libgflags.dll即可。

再次调试,成功命中caffe入口main函数断点:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第9张图片

也出现了mnist训练的过程记录日志:

Caffe学习(八):Windows下编译及调试Debug版Caffe_第10张图片

至此,caffe debug版本编译及调试完成。

你可能感兴趣的:(深度学习,Caffe)