Windows下 Caffe C++接口的调用

####Tips:此处是 Windows 下,添加 CPU 版 Caffe 源码的 C++ 工程,分为带源码版(学习源码)和不带源码版(直接用的),如果不是学习源码建议直接看B部分,不用拷贝源码过去。并且在安装过程中如果是链接库的问题,直接按照报错提示增删就可以了。这里添加的链接库都是Debug版的,如果要配Release版的直接将库的名字改成Release版本的库添加进去就可以了。

#A.带源码版

##1.拷贝 caffe 文件到 C++ 项目中

这里我新建了一个名字是 Caffe_c 的空项目。根据我的上一篇博客:Windows 下用 build_win.cmd, 直接编译CPU版caffe,先配置出来 Debug 版的 Caffe。这里以我电脑中caffe的路径为例,我的路径是:F:\Software_download\caffe-windows。打开 caffe-windows/build/install/include/caffe 这个目录,其中是包含了各种caffe的头文件:
在这里插入图片描述

caffe-windows/src/caffe 里面都是和 build/install/include/caffe 中对应的 .cpp 文件:

在这里插入图片描述

为了使用方便,我们先把需要用到的文件拷贝到 C++ 项目中:

**第1步:**将 caffe-windows/build/install/include 文件夹拷贝到新建的 C++ 项目中。

**第2步:**将 caffe-windows/src 文件夹拷贝到新建的 C++ 项目中。

拷贝完以后如图:

在这里插入图片描述

##2. 添加 caffe 文件到 C++ 项目中

然后将控制台方案设置成 Debug x64 ,为了管理方便,选中我们空白项目的 头文件 -> 点击右键 -> 添加 -> 新建筛选项,按照 build/install/include/caffe 目录的形式新建对应个数的文件夹并重命名,然后依次将 caffe 所有的 .hpp 文件添加到对应名称的文件夹中:

在这里插入图片描述

###注:因为我们这里不需要使用 test 功能,所以 include 和 src 中与 test 有关的文件我们都不用添加到项目文件中。

添加后:
在这里插入图片描述

同理,将 caffe-windows/src/caffe 所有的 .cpp 文件也都添加进对应的源文件中(目录结构也和src相同):

在这里插入图片描述

##3. 配置相关文件路径

#####1.为了方便这里 OpenCV我们直接用Windows下安装Caffe 自带的依赖库文件中的 OpenCV,(为3.10版本),这个版本是没有 opencv_world310d.lib 和 opencv_world310.lib的,所以添加的库是多个例如:opencv_core310d.lib, opencv_highgui310d.lib等。如果使用的是自己编译的源码,这样依赖库直接 添加一个 opencv_world310d.lib 或者 opencv_world310.lib 就可以了。(具体方法见:Windows下 Cmake + VS 编译 OpenCV 源码

  • 选择项目属性 -> vc++目录 -> 包含目录,添加:
# boost 库的文件路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\boost-1_61

# caffe 其他依赖库的文件路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include
	
# caffe .hpp .cpp 文件的路径
D:\Program\vs2015\Caffe_c\include
D:\Program\vs2015\Caffe_c\src
  • 选择项目属性 -> vc++目录 -> 库目录,添加:
# caffe 依赖库的路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib

# caffe 自带 OpenCV 库的路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\lib

# caffeproto-d.lib 的路径
F:\Software_download\caffe-windows\build\lib\Debug
  • 选择项目属性 -> C/C++ -> 预处理器 -> 预处理器定义,添加:
    CPU_ONLY
    _SCL_SECURE_NO_WARNINGS
    _CRT_SECURE_NO_DEPRECATE
    _CRT_NONSTDC_NO_DEPRECATE
    USE_LMDB
    USE_OPENCV
  • 选择项目属性 -> 链接器 -> 输入 -> 附加依赖项,添加:
caffe-d.lib
caffeproto-d.lib
libprotobufd.lib
libopenblas.dll.a
libprotobuf-lited.lib
libprotocd.lib
gflagsd.lib
glogd.lib
lmdbd.lib
caffehdf5_cpp_D.lib
caffehdf5_D.lib
caffehdf5_hl_cpp_D.lib
caffehdf5_hl_D.lib
libcaffehdf5_cpp_D.lib
libcaffehdf5_D.lib
libcaffehdf5_hl_cpp_D.lib
libcaffehdf5_hl_D.lib
opencv_core310d.lib
opencv_highgui310d.lib
opencv_imgproc310d.lib
opencv_imgcodecs310d.lib
boost_thread-vc140-mt-gd-1_61.lib
boost_python3-vc140-mt-gd-1_61.lib

##4. 编译生成
在编译生成时会遇见无法打开 lib*.lib 文件的情况:

1.
在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述

解决方法: 以图1中错误为例,在boost库的lib文件夹下(即第3步的boost库路径)先找到boost_thread-vc140-mt-gd-1_61.lib,在同一个文件夹中创建一个副本并重新命名为libboost_thread-vc140-mt-gd-1_61.lib就行了

解决上述问题后,再生成会遇见,下面这种情况:

在这里插入图片描述

这是项目中没有主函数造成的,我们需要添加一个main函数,完成后,最后生成成功,就可以一步一步调试caffe代码了。:

在这里插入图片描述
4.
无法解析的外部符号 NtCreateSection,该符号在函数 mdb_env_map 中被引用

这里写图片描述

解决方法:
是缺少 ntdll.lib, 在电脑上搜索此名字的库文件,或者从网上下载一个,将路径添加到 库目录下,并将 ntdll.lib 添加到 项目属性 -> 链接器 -> 输入 -> 附加依赖项 中即可。

#B. 不带源码版

过程同上,只是不需要将源码拷贝过来。

##1.配置相关文件路径

  • 选择项目属性 -> vc++目录 -> 包含目录,添加:
# boost 库的文件路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\boost-1_61

# caffe 其他依赖库的文件路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include
	
# caffe .hpp .cpp 文件的路径
F:\Software_download\caffe-windows\build\install\include
F:\Software_download\caffe-windows\src
  • 选择项目属性 -> vc++目录 -> 库目录,添加:
# caffe 依赖库的路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib

#caffe 自带 OpenCV 库的路径
C:\Users\Chris_zhang\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\lib

# caffeproto-d.lib 的路径
F:\Software_download\caffe-windows\build\lib\Debug
  • 选择项目属性 -> C/C++ -> 预处理器 -> 预处理器定义,添加:
    CPU_ONLY
    USE_OPENCV
  • 选择项目属性 -> 链接器 -> 输入 -> 附加依赖项,添加:
caffe-d.lib
caffeproto-d.lib
libprotobufd.lib
libopenblas.dll.a
libprotobuf-lited.lib
libprotocd.lib
gflagsd.lib
glogd.lib
caffehdf5_cpp_D.lib
caffehdf5_D.lib
caffehdf5_hl_cpp_D.lib
caffehdf5_hl_D.lib
libcaffehdf5_cpp_D.lib
libcaffehdf5_D.lib
libcaffehdf5_hl_cpp_D.lib
libcaffehdf5_hl_D.lib
opencv_core310d.lib
opencv_highgui310d.lib
opencv_imgproc310d.lib
opencv_imgcodecs310d.lib
boost_thread-vc140-mt-gd-1_61.lib
boost_python3-vc140-mt-gd-1_61.lib

然后同上修改boost文件名,在boost库的lib文件夹下(即第3步的boost库路径)先找到boost_thread-vc140-mt-gd-1_61.lib,在同一个文件夹中创建一个副本并重新命名为libboost_thread-vc140-mt-gd-1_61.lib就行了,其他同上。

添加一个主函数,直接编译就可以了。

####-----------------------------------------------------------------------------------------------------
相关文章:
Windows下 Pycaffe 的配置与使用
Windows 下用 build_win.cmd 直接编译CPU版caffe

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值