visual studio和cmake如何编译dlib库

官网 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项目

运行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的配置,看我这个系列的前面课程,有详细介绍。

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了。

测试可以解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2778335.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Linux上部署1Panel运维管理面板并实现无公网ip远程访问

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

数据结构——5.5 树与二叉树的应用

5.5 树与二叉树的应用 概念 结点的权&#xff1a;大小可以表示结点的重要性 结点的带权路径长度&#xff1a;从树的根到该结&#xff0c;的路径长度&#xff08;经过的边数&#xff09;与该结点权的乘积 树的带权路径长度&#xff1a;树中所有叶结点的带权路径长度之和(WPL) …

给定长度为n的01串s,有两种操作:1、交换相邻的两个字符,花费为1e12;2、删除一个字符,花费为1e12 + 1,求使s不递减的最少花费

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e12, maxm 4e4 5, …

反序列化漏洞——PHP原生类

Error类 PHP>7.0&#xff0c;因为存在__toString&#xff0c;可以进行XSS Exception类 因为存在__toString&#xff0c;可以进行XSS DirectoryIterator类 因为存在__toString&#xff0c;可以获取符合要求的第一个文件名 SplFileObject类 因为存在__toString&#xff0c…

Python 数据可视化之山脊线图 Ridgeline Plots

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 JoyPy 是一个基于 matplotlib pandas 的单功能 Python 包&#xff0c;它的唯一目的是绘制山脊线图 Joyplots&#xff08;也称为 Ridgeline Plots&…

滑块验证码识别代码分享

平时我们开发爬虫会遇到各种各样的滑动验证码&#xff0c;如下图所示&#xff1a; 为了解决这个问题&#xff0c;我写了一个通用的滑块验证码识别代码&#xff0c;主要是分析图片&#xff0c;然后计算出滑块滑动的像素距离。但是像素距离大多数情况下都不会等于滑动距离&#x…

记:STM32F4参考手册-存储器和总线架构

STM32F4参考手册-存储器和总线架构 目录 STM32F4参考手册-存储器和总线架构 系统架构 AHB/APB总线桥&#xff08;APB&#xff09; 存储器组织结构 存储器映射 SRAM概述 Flash概述 位段 自举配置 嵌入式自举程序 物理重映射 系统架构 主系统由32位多层AHB总线矩阵构…

cximage在vs2013下使用方法

1.下载源码 Cximage源码官网 CxImage download | SourceForge.net 下载最新版本 702版本 Download cximage702_full.7z (CxImage) 2.编译 vs2013打开CxImageFull_vc10.sln 这个源码版本是vc10的版本&#xff0c;所以vs2013会自动更新项目 因为cximage需要在后面的项目中使…

零基础学python之高级编程(1)---面向对象编程及其类的创建

面向对象编程及其类的创建 文章目录 面向对象编程及其类的创建前言一、面向过程编程和面向对象编程的概念1.面向过程编程(Procedural Programming)2.面向对象编程(Object-Oriented Programming&#xff0c;OOP) 二、面向对象编程基础1.初识类(class)和对象调用方法 2.类中的两种…

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-时间管理

目录 一、时间管理1.1、时间接口 一、时间管理 时间管理以系统时钟为基础&#xff0c;给应用程序提供所有和时间有关的服务。系统时钟是由定时器/计数器产生的输出脉冲触发中断产生的&#xff0c;一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为…

视觉开发板—K210自学笔记(三)

本期我们来遵循其他单片机的学习路线开始去做一位点灯大师—点亮一个LED。那么第一步还是先知道K210里面的硬件电路是怎么连接的&#xff0c;需要查看上一节的文档&#xff0c;看看开发板原理图到底是哪个LED跟哪个IO连在一起。 一、硬件电路 根据之前官方提供的assembly draw…

Redis进阶(二):事务

redis事务特点 弱化的原子性 redis事务的原子性不像MySQL原子性一样&#xff0c;执行不成功的话&#xff0c;redis事务不会进行回滚操作 不具备一致性 redis没有约束&#xff0c;也没有回滚机制&#xff0c;因此事务执行的过程中如果某个修改操作出现失败&#xff0c;就可能引起…

【【C++类与对象(下)】】

1. 再谈构造函数 构造函数体赋值 在创建对象时&#xff0c;编译器会通过调用构造函数&#xff0c;给对象中的各个成员变量一个合适的初始值&#xff1a; class Date { public:// 构造函数Date(int year 0, int month 1, int day 1){_year year;_month month;_day day;}…

基于SpringBoot+Vue的服装销售商城系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

UUID算法:独一无二的标识符解决方案

引言 在分布式系统和大数据环境下&#xff0c;唯一标识符的生成和管理是一项关键任务。UUID&#xff08;Universally Unique Identifier&#xff09;算法应运而生&#xff0c;成为了解决重复数据和标识符冲突的有效工具。本文将探讨UUID算法的优势和劣势&#xff0c;分析其在分…

数据可视化之维恩图 Venn diagram

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 维恩图&#xff08;Venn diagram&#xff09;&#xff0c;也叫文氏图或韦恩图&#xff0c;是一种关系型图表&#xff0c;用于显示元素集合之间的重叠区…

『运维备忘录』之 Find 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

算法学习——LeetCode力扣双指针篇

算法学习——LeetCode力扣双指针篇1 27. 移除元素 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#…

159基于matlab的基于密度的噪声应用空间聚类(DBSCAN)算法对点进行聚类

基于matlab的基于密度的噪声应用空间聚类(DBSCAN)算法对点进行聚类&#xff0c;聚类结果效果好&#xff0c;DBSCAN不要求我们指定集群的数量&#xff0c;避免了异常值&#xff0c;并且在任意形状和大小的集群中工作得非常好。它没有质心&#xff0c;聚类簇是通过将相邻的点连接…

Prompt Engineering实战-构建“哄哄模拟器”

目录 一 背景 二 “哄哄模拟器”的Prompt Prompt 的典型构成 三 操作步骤 3.1 创建对话 3.2 游戏测试 一 背景 前几天《AI 大模型全栈工程师》第二节课讲了“Prompt Engineering&#xff0c;提示工程”&#xff0c;里面提到一些prompt相关的技巧&#xff0c;原则&#xf…