dlib库是一个非常强大的开源库,有详细的说明文档和c++代码,也提供了一些和python的接口,但是安装和配置的过程略有些麻烦,网上有一些相关教程,但是大都零零星星不全面。笔者亲自把所有的坑都踩了一遍,整理出了比较全面的教程,供大家参考

1、        下载安装包

先在dlib网站上下载最新的库文件http://dlib.net/,左边的一列是菜单栏,包括了dlib的使用场景、编译换几个、python接口等各种详细说明,可以看出该库的应用场景包括API打包、图像处理、线性代数、机器学习、网络编程等几个大场景,每个场景之下又有小的分类,不禁感叹dlib库 的强大。

我下载的是dlib-19.7,将文件解压,将解压后的文件夹放置与任意文件夹下,路径中不要包含中文

2、        建立控制台工程

打开visual studio 2017(其他版本的配置过程类似),建立控制台工程。这时如果直接将example中的代码直接拷贝进去,就会报各种错误,首先错误就是无法进入找到dlib库文件中的各种头文件

3、        包含dlib对应文件夹

我们需要在项目属性中添加上刚才解压好的lib路径,注意添加的是dlib-19.7而不是dlib-19.7/dlib,因为前者包含了除dlib库之外的很多内容,为避免以后麻烦,这里直接包含dlib-19.7

右侧解决方案资源管理器,在项目上右击鼠标->属性->VC++目录,包含目录、引用目录、库目录均添加上dlib-19.7文件夹路径,点击确认

4、        添加dlib.lib

这时可以发现之前红红色波浪线的错误都已经不在了,但是进行编译时,会出现如下的错误,

大概读一下错误内容以及错误类型,可以判断是因为缺少dlib.lib文件导致的。下面需要制作dlib.lib,当然网上也有,但是不一定时最新的dlib,建议自己制作,也不麻烦

5、        制作dlib.lib

我们需要利用Cmake软件,cmake是一个跨平台编译工具,能够方便地制作库文件,进入官网(https://cmake.org/download/) 下载与你本人操作系统位数匹配的版本就可以

下载完成之后,开始安装,如图所示,第一行时dlib-19.7文件夹中的dlib文件夹,第二行dlib_building2是一个空的文件夹 ,用于存放制作完成之后的文件

点击generate,选择对应的vs版本号,下面的选项默认即可,点击finish,库文件制作开始

当出现如下字样时,制作完成

完成之后找到刚才的dlib_building2文件夹,用vs2017打开dlib.vcxproj

右击重新生成,

在刚才的文件夹共会出现debug文件夹,里面有需要的lib文件

进入原来的工程,右击进入属性页面,修改两个地方,在链接器下的常规选项卡中的的附加库目录中,加入之前生成的dubug路径。

在连接器的输入选项卡中的“附加依赖项目”中添加dlib.lib

6、        添加source以及修改stadfx属性

到这一步基本以及完成大部分,能够正常运行是最好不过的,但是如果出现如下错误

error LNK2001:无法解析的外部符号USER_ERROR__missing_dlib_all_source_cpp_file__OR__inconsistent_use_of_DEBUG_or_ENABLE_ASSERTS_preprocessor_directives

那就说明需要加入source.cpp文件,我们以添加现有项的方式加入,该文件位于 dlib-19.7文件夹下

这是笔者遇见了这样的错误:

这个错误看上去简单,但是当你在其中加入“stdafx.h”头文件时,还会有其他预编译的错误,执行起来麻烦,笔者经过查找各种资料,以及自己尝试,发现最简单的方法就是在source.cpp文件上右击,点“属性”,将预编译头设置改为不使用即可

如果遇见了这样的问题:

***\dlib\all\source.cpp : fatal error C1128:节数超过对象文件格式限制:请使用/bigobj进行编译

则按照如下方式解决

7、成功运行

直接运行示例程序(http://dlib.net/gui_api_ex.cpp.html),可以得到这样的一个图形用户界面,可以看出这是一个用鼠标单击并且进行计数的一个程序,每次点击button,都会是的数字加一

7、        图形处理类配置

以上配置可以满足非图形处理的需要,但是如若你的程序中的算法需要处理图片,比如你想做人脸识别或则时物品检测,需要读取图片,那么请继续往下看

可能在编译时遇见这样的错误

You must #define DLIB_JPEG_SUPPORT and link to libjpeg to read JPEG files.

Do this by following the instructions athttp://dlib.net/compile.html.

Note that you must cause DLIB_JPEG_SUPPORT to be defined for

your entire project.

So don’t #define it in one file. Instead, add it to the

C/C++->Preprocessor->Preprocessor Definitions

field in Visual Studio’s Property Pages window so it takes effect for your

entire application.

解决方法如下:

将注释中的表示的缺少项加进去即可

如果报如下错误:

\dlib\dlib-19.4\dlib\image_loader\jpeg_loader.cpp(17):

fatal error C1083:无法打开包括文件: “jpeglib.h”:

No such file or directory

则需要按照上面的方法添加DLIB_JPEG_STATIC即可

dlib 怎么安装vs2017_dlib库+vs2017详细配置流程相关推荐

  1. python的matplotlib库怎么安装,用pip给python安装matplotlib库的详细教程

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 1.首先在python里安装pip,打开安装python的文件夹,找到pyt ...

  2. Vscode安装第三方库PyQt5和配置Qt

    小白在Vscode安装第三方库PyQt5和配置Qt 安装pyqt5组件和可能遇到的问题(借鉴) PyQt5以及PyQt5-tools(designer) pip版本过低(如果出现问题,安装pyqt5组 ...

  3. 无人值守安装linux指定硬盘,Linux无人值守自动化安装详细配置流程!

    在生产环境中,往往需要给成百上千台服务器安装系统,手动安装略显蛋疼,网络自动化引导安装就能解决批量安装的问题,从此批量系统安装so easy! 以下配置流程均在CentOS 6.7实现 实现环境: P ...

  4. python离线安装第三方库whl_详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)...

    1.安装目标库 1.首先,选择你要导入的库文件,如seaborn库 下载网站: https://pypi.org/ 或https://www.lfd.uci.edu/~gohlke/pythonlib ...

  5. dlib 怎么安装vs2017_dlib开发环境部署

    问题1 NOTE: Visual Studio didn't have good enough C++11 support until Visual Studio 2015 update 3 (v19 ...

  6. python怎么安装第三方库-vs2017怎么安装python第三方包

    vs2017有独立的python环境:所以想在vs2017开发python并使用第三方包,需要在vs2017中操作,完成第三方包的安装. 一,查看vs2017有哪些版本的python,当前使用的是哪个 ...

  7. Java开发环境变量配置【java1.8安装及环境变量详细配置】【JAVA_HOME系统变量、CLASSPATH系统变量、系统环境变量Path】

    jdk1.8.0_201--百度网盘下载:[链接:https://pan.baidu.com/s/1osRsn8D2iMdq_qton0LXrw 提取码:zjxs] 目   录 jdk安装步骤截图 复 ...

  8. CLion上用platformIO开发esp32,CLion开发esp32详细配置流程

    太爱Jetbrains了!!! 上次用烦了keil写stm32,Clion马上给俺整了个2019.1更新,直接整合了stm32CubeMX,从此抛弃keil. 最近毕设选择了用esp32,然后用pla ...

  9. ORBSLAM2在Ubuntu14.04上详细配置流程

    前言 ORBSLAM2是一个非常适合SLAM入门学习的开源工程.它支持单目.双目.RGB-D使用,可以计算摄像机的轨迹,并且重建稀疏的3D地图. 官网有源代码和配置教程,地址是 https://git ...

最新文章

  1. 【leetcode】1018. Binary Prefix Divisible By 5
  2. NLP自然语言常见问题及相关模型训练数据格式示例
  3. 神经网络反向传播算法
  4. 在单元测试时指定HttpContext的各种Path
  5. oracle定时任务(dbms_job)
  6. 彻彻底底了解回调函数
  7. android 机顶盒 系统开发入门,读《Android电视机(机顶盒)初次开发的一些经验分享》后的笔记...
  8. 解决Redis修改bind域名绑定后出现Could not connect to Redis
  9. shell监控磁盘使用情况
  10. 为什么JavaScript中给变量赋值会影响到其他地方?
  11. php一行代码实现人脸识别,一行代码搞定人脸识别
  12. 米谟科技 3D音频VR编辑器——sound flare声弹是什么
  13. Introduction to Modern Cryptography (Second Edition)
  14. 笔记本一直提示计算机内存不足怎么办,电脑总是提醒内存不足怎么办,电脑提醒内存不足-...
  15. qt android图片自适应大小,Qt on Android:怎样适应不同的屏幕尺寸
  16. 【小程序】小程序托管平台的功能展望与想法
  17. JS模块化的'前世今生'
  18. XYOJ1259: 找零钱(除法 余数)
  19. 古装偶像剧的千层套路
  20. 渗透测试之社交工程攻击

热门文章

  1. TMS320C6713和TMS320C6713B有什么区别?
  2. uwsgi部署django
  3. Python经典数据类型:字典
  4. 电商渠道“触板”,论手机品牌如何开拓渠道融合之路?
  5. 轻松帮你清理重复文件的工具:Cisdem Duplicate Finder mac版
  6. 靠报销软件冲刺IPO,“小而美”的Expensify价值几何?
  7. 端到端加密优缺点_Tresorit推出端到端加密文档扫描应用
  8. 【雕爷学编程】Arduino动手做(70)---土壤湿度传感器
  9. js只获取链接的域名部分
  10. jquery中国地图热点提示信息,可作链接特效