zoukankan      html  css  js  c++  java
  • dlib库+vs2017详细配置流程

    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文件上右击,点“属性”,将预编译头设置改为不使用即可

     

    如果遇见了这样的问题:

    ***dliballsource.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 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.

    解决方法如下:

     

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

    如果报如下错误:

    dlibdlib-19.4dlibimage_loaderjpeg_loader.cpp(17): fatal error C1083: 无法打开包括文件: “jpeglib.h”: No such file or directory

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

  • 相关阅读:
    增值业务
    话题:jQuery 关于文件上传表单处理的一个非常怪异的问题
    net use 的使用
    c#开发snmp应用
    PowerDesigner15使用时的十五个问题
    一段JS代码,让你的WordPress支持简繁转换(转)
    聚集索引查询优化
    NHibernate 2.1.2相关地址
    Oracle expdp/impdp导出导入命令及数据库备份(转)
    大型ORACLE数据库优化设计方案
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/7807679.html
Copyright © 2011-2022 走看看