由于一些原因,需要编译caffe 的windows版本,用的是happynear的caffe版本,
一、报错找不到caffe.pb.h
如何生成 caffe.pb.h
将protobuf 里的 protoc.exe 粘贴到 ..\src\caffe\proto里(已存在caffe.proto文件),打开控制台,输入
protoc.exe caffe.proto --cpp_out=.
生成 caffe.pb.h 文件。
将caffe.pb.h 文件粘贴到 ..\include\caffe\proto,重新编译,即可。
https://www.jianshu.com/p/c690cb371641
二、报错如下
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2694 “bool boost::system::error_category::std_category::equivalent(const std::error_code &,int) const”: 重写虚函数的限制性异常规范比基类虚成员函数“bool std::error_category::equivalent(const std::error_code &,int) noexcept const”少 libcaffe E:\0-project\1-facerecognition\1-code\AMSoftmax-master\AMSoftmax-master\Caffe-AM-Softmax\caffe-windows-ms\windows\thirdparty\Boost\boost\system\error_code.hpp 247
解决问题的方法见下面。
环境:
windows 7
visual studio 2015
cuda8.0
cudnn5
以下为详细操作记录
下载源码及其依赖:
https://github.com/happynear/caffe-windows
下载第三方依赖:
链接:https://pan.baidu.com/s/1d-zUOb0rWPYIy0vd2VxFBQ
提取码:qjfq
下载后解压到./windows/thirdparty文件夹下,然后把./windows/thirdparty/bins加入到环境变量中。
修改props文件
将CommonSettings.props.example更名为CommonSettings.props
修改props文件中的cuda版本和cudnn路径
<PropertyGroup Label="UserMacros">
<CpuOnlyBuild>false</CpuOnlyBuild>
<UseCuDNN>true</UseCuDNN>
<CudaVersion>8.0</CudaVersion>
<PythonSupport>true</PythonSupport>
<BoostIncludeFolder>$(SolutionDir)thirdparty\Boost\boost_1_61_0</BoostIncludeFolder>
<BoostLibraryFolder>$(SolutionDir)thirdparty\Boost\boost_1_61_0\lib64-msvc-14.0</BoostLibraryFolder>
<HDF5Root>$(SolutionDir)thirdparty\HDF5</HDF5Root>
<GFlagsRoot>$(SolutionDir)thirdparty\GFlags</GFlagsRoot>
<GLogRoot>$(SolutionDir)thirdparty\Glog</GLogRoot>
<ProtobufRoot>$(SolutionDir)thirdparty\Protobuf</ProtobufRoot>
<ProtocDir>$(ProtobufRoot)\bin\</ProtocDir>
<OpenCVRoot>$(SolutionDir)thirdparty\OpenCV</OpenCVRoot>
<LMDBRoot>$(SolutionDir)thirdparty\LMDB</LMDBRoot>
<OpenBLASRoot>$(SolutionDir)thirdparty\OpenBLAS</OpenBLASRoot>
<LevelDBRoot>$(SolutionDir)thirdparty\LEVELDB</LevelDBRoot>
<NCCLRoot>$(SolutionDir)thirdparty\NCCL</NCCLRoot>
<CudaArchitecture>compute_52,sm_52;compute_61,sm_61;</CudaArchitecture>
<!-- CuDNN 3 and 4 are supported -->
<CuDnnPath>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0</CuDnnPath>
<ScriptsDir>$(SolutionDir)\scripts</ScriptsDir>
</PropertyGroup>
注意:boost三方库要使用版本boost_1_61_0下的。
编译boost1.61是这么来的,从这里下载
下载boost1.61后需要先编译,打开vs2015 x64本机工具命令提示符,然后进入boost目录,输入:
注意:boost会默认编译32位库,要编译64位库需要添加address-model=64 参数:
bootstrap.bat
.\b2
.\b2 address-model=64
编译完成之后,把props中的下段:
<BoostIncludeFolder>$(SolutionDir)thirdparty\Boost</BoostIncludeFolder>
<BoostLibraryFolder>$(SolutionDir)thirdparty\Boost\lib64-msvc-14.0</BoostLibraryFolder>
路径修改为boost1.61的路径
<BoostIncludeFolder>$(SolutionDir)thirdparty\Boost\boost_1_61_0</BoostIncludeFolder>
<BoostLibraryFolder>$(SolutionDir)thirdparty\Boost\boost_1_61_0\lib64-msvc-14.0</BoostLibraryFolder>
编译libcaffe
然后编译libcaffe即可成功.