visual studio和cmake如何编译dlib库

本文详细介绍了如何在VS2013和VS2015版本中下载、配置并编译DlibC++Library19.0,包括与VisualStudio版本的对应关系,以及如何在项目中集成并解决编译时的问题,如与OpenCV的协同使用和特定错误修复。
摘要由CSDN通过智能技术生成

官网 dlib C++ Library  对应的是最新版本,只能用到vs2015版本及以后

如果使用vs2013,所以需要下载vs2013可用的版本。

就是说dlib版本与vs版本有对应关系

所有版本

dlib C++ Library - Browse /dlib at SourceForge.net

Releases · davisking/dlib · GitHub

下面以dlib19.0与vs2013为例,其他都一样。

使用19.0版本,可以在vs2013使用

Release v19.0 · davisking/dlib · GitHub

下载

下载后源码位置

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\dlib_source\dlib-19.0

使用cmake将dlib转成vs2013项目

下载cmake-3.6.1

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\cmake-3.6.1-win64-x64\cmake-3.6.1-win64-x64

运行 cmake-gui.exe

显示source code,就是dlib源码位置

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\dlib_source\dlib-19.0\dlib

build the binaries

转换后的目录

在下面目录中建立一个build目录

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\dlib_source\dlib-19.0

设置到

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\dlib_source\dlib-19.0\build

点击configure,选择 Visual Studio 12 2013 Win64,然后选择Genarate

选择后,点击finish,会进行导入第一生成,可能会有红色警告,告知无法找到cuda,可以不用管,再次点击generate生成

此时在刚才建立的build目录中,会生成vs2013的dlib项目

【更多C++计算机视觉课程请看下面链接:
https://student-api.iyincaishijiao.com/t/iNADkE2v/】

运行dlib.sln

不管是opencv还是dlib,如果你的程序是debug版本,需要使用dlib或opencv的debug版本,如果你的程序是release版本,需要使用dlib或opencv的release版本。

下面先编译 dlib对应x64的debug版本,注意目前的所有程序都是基于x64,win32的已经逐步淘汰。

打开dlib.sln后,可以看到缺省设置的就是x64下的debug

右键选择ALL_BULID,然后rebuild

显示全部build成功

在build目录的debug目录中会生成基于x64的debug的dlib库

Release版本的build一样

把debug设置修改为release即可

记住:如果你自己的vs2013下的程序设置的是debug模式,使用的dlib也是debug。同样道理,你的程序是release,dlib也需要release。

下面需要设置在自己的程序中使用dlib,以debug模式为例。

下面以检测人脸特征点为例

Vs2013中建立一个控制台的空项目, face_landmarks,检测人脸的68个特征点

如果solution解决方案有多个project项目,设置为startup project,因为运行的时候只能运行一个project,就是运行这个设置为startup的project

右键 sorce files中增加new item

增加一个主c++文件

确认设置好的是x64的debug环境,一定要点击下面的configuration manager看下

下面显示还是win32,需要修改为x64,并且Build打勾要

点击new,选择x64即可点击ok

配置dlib的包含(include)文件和库(lib)文件的目录位置

包含文件路径

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\dlib_source\dlib-19.0

库文件路径,就是上述build好的库文件位置

D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\CV\dlib_source\dlib-19.0\build\Debug

配置链接库名 dlib.lib

C/C++->预处理器添加

DLIB_PNG_SUPPORT

DLIB_JPEG_SUPPORT

很多时候dlib需要和opencv配合使用,对于opencv的配置,看我这个系列的前面课程,有详细介绍。

【更多C++计算机视觉课程请看下面链接:
https://student-api.iyincaishijiao.com/t/iNADkE2v/】

Dlib19.20编译vs2015时候出现问题

  1. d:\lyp\project\ai_train\c_plus_opencv\learn_cv\dlib_vs2015\dlib\dlib\global_optimization/find_max_global.h(79): error C2535: “unknown-type dlib::gopt_impl::call_function_and_expand_args<max_unpack>::go(T &&,const dlib::matrix<double,0,1,dlib::default_memory_manager,dlib::row_major_layout> &)”: 已经定义或声明成员函数 (编译源文件 D:\lyp\Project\AI_Train\c_plus_opencv\learn_cv\dlib_vs2015\dlib\dlib\svm\auto.cpp)

解决方案:

这个问题是由vs2015导致的。

Dlib源码中找到删除auto.cpp以及kalman_filter.cpp源码文件

在项目文件中也删除

重新编译后成功,实际使用中会出现问题

无法解析的外部符号 USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2

该符号在函数 "void __cdecl `dynamic initializer for 'dlib_check_not_configured_helper_variable''(void)"

(??__Edlib_check_not_configured_helper_variable@@YAXXZ) 中被引用

  1. D:\lyp\code\id_photo\id_cmake\DMS\out_vc14_release\bin\pohotoSysSDK.dll : fatal error LNK

打开cmake之后的项目,找到这个路径(就是dlib的头文件目录)

找到test_for_odr_violations.h,也就是下面这个

点开找到这一段

注意

const extern int USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2=0

这一行,官方的是没有“=0”的。加上,再编译就O了。

测试可以解决

【更多C++计算机视觉课程请看下面链接:
https://student-api.iyincaishijiao.com/t/iNADkE2v/】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值