dlib库+vs2017详细配置流程

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

一、        下载安装包python

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

 

 

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

二、        创建控制台工程编程

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

 

 

 

三、        包含dlib对应文件夹网络

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

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

 

 

 

四、        添加dlib.lib工具

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

 

 

大概读一下错误内容以及错误类型,能够判断是由于缺乏dlib.lib文件致使的。下面须要制做dlib.lib,固然网上也有,可是不必定时最新的dlib,建议本身制做,也不麻烦

五、        制做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

 

 

六、        添加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 进行编译

则按照以下方式解决

 

 

七、成功运行

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

 

 

 

七、        图形处理类配置

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

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

You must #define DLIB_JPEG_SUPPORT and link to libjpeg to read JPEG files. 
Do this by following the instructions at 
http://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便可

相关文章
相关标签/搜索