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

测试可以解决

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[word] word如何打印背景和图片? #微信#其他#经验分享

word如何打印背景和图片&#xff1f; 日常办公中会经常要打印文件的&#xff0c;其实在文档的打印中也是有很多技巧的&#xff0c;可以按照自己的需求设定&#xff0c;下面给大家分享word如何打印背景和图片&#xff0c;一起来看看吧&#xff01; 1、打印背景和图片 在默认的…

C++笔记之regex(正则表达式)

C++笔记之regex(正则表达式) ——2024-02-10 ——《C++标准库》(第2版,侯捷译) Page 717 code review! 文章目录 C++笔记之regex(正则表达式)例1:使用正则表达式进行搜索(`std::regex_search`)例2:使用正则表达式进行全文匹配(`std::regex_match`)例3:使用正则表达式…

【JAVA WEB】 百度热榜实现 新闻页面 Chrome 调试工具

目录 百度热榜 新闻页面 Chrome 调试工具 --查看css属性 打开调试工具的方式 标签页含义 百度热榜 实现效果&#xff1a; 实现代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…

Linux第45步_通过搭建“DNS服务器”学习图形化配置工具

学习的意义&#xff1a;通过搭建“DNS服务器”&#xff0c;来学习“图形化配置工具”。“DNS服务器”&#xff0c;我们用不到&#xff0c;但为后期移植linux系统服务&#xff0c;因为在移植系统时&#xff0c;需要用到这个“图形化配置工具”。 1、“menuconfig图形化配置工具…

Spring Boot 笔记 005 环境搭建

1.1 创建数据库和表&#xff08;略&#xff09; 2.1 创建Maven工程 2.2 补齐resource文件夹和application.yml文件 2.3 porn.xml中引入web,mybatis,mysql等依赖 2.3.1 引入springboot parent 2.3.2 删除junit 依赖--不能删&#xff0c;删了会报错 2.3.3 引入spring web依赖…

STM32F1 - 源码解析SystemInit()

SystemInit 1> SystemInit( )调用位置2> SystemInit ()函数2> SystemInit ()函数 1> SystemInit( )调用位置 startup_stm32f10x_hd.s文件中&#xff1a; ; Reset handler Reset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT __mainIMPORT Sy…

LLM少样本示例的上下文学习在Text-to-SQL任务中的探索

导语 本文探索了如何通过各种提示设计策略&#xff0c;来增强大型语言模型&#xff08;LLMs&#xff09;在Few-shot In-context Learning中的文本到SQL转换能力。通过使用示例SQL查询的句法结构来检索演示示例&#xff0c;并选择同时追求多样性和相似性的示例可以提高性能&…

腾讯云4核8G12M轻量应用服务器性能够用吗?支持多少人?

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

【计算机网络】协议层次及其服务模型

协议栈&#xff08;protocol stack&#xff09; 物理层链路层网络层运输层应用层我们自顶向下&#xff0c;所以从应用层开始探究应用层 协议 HTTP 提供了WEB文档的请求和传送SMTP 提供电子邮件报文的传输FTP 提供两个端系统之间的文件传输报文&#xff08;message&#xff09;是…

《杨绛传:生活不易,保持优雅》读书摘录

目录 书简介 作者成就 书中内容摘录 良好的家世背景&#xff0c;书香门第为求学打基础 求学相关 念大学 清华研究生 自费英国留学 法国留学自学文学 战乱时期回国 当校长 当小学老师 创造话剧 支持钱锺书写《围城》 出任震旦女子文理学院的教授 接受清华大学的…

深入探索Java IO:从基础到高级操作全览

深入探索Java IO&#xff1a;从基础到高级操作全览 Java IO一、概览二、磁盘操作三、字节操作实现文件复制装饰者模式 四、字符操作编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容 五、对象操作序列化Serializabletransient 六、网络操作InetAddressU…

python3 获取某个文件夹所有的pdf文件表格提取表格并一起合并到excel文件

下面是一个完整的示例&#xff0c;其中包括了merge_tables_to_excel函数的定义&#xff0c;并且假设该函数的功能是从每个PDF文件中提取第一个表格并将其合并到一个Excel文件中&#xff1a; import os from pathlib import Path import pandas as pd import pdfplumber …

【数据分享】1929-2023年全球站点的逐日降水量数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全…

MYSQL存储过程(含入参、出参)

1、创建库存表语句 -- eladmin.t_stock definitionCREATE TABLE t_stock (id bigint(20) NOT NULL AUTO_INCREMENT,quantity bigint(20) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4101 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_bin; id为主键&#xff0c;便于…

【Java EE初阶十二】网络初识

1. 网络发展史 网络发展的几个主要时期&#xff1a; 单机时代->局域网时代->广域网时代->移动互联网时代 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同工作来完成 业务&#xff0c;就有了网络互…

基于 multiprocessing.dummy 的多线程池与单线程访问多网页的比较示例

一、示例代码&#xff1a; from multiprocessing.dummy import Pool as ThreadPool import time import requestsurls [ # URL队列&#xff0c;通过多线程访问http://www.python.org,http://www.python.org/about/,http://www.…

每日五道java面试题之java基础篇(二)

第一题. 为什么说 Java 语⾔“编译与解释并存”&#xff1f; ⾼级编程语⾔按照程序的执⾏⽅式分为编译型和解释型两种。 简单来说&#xff0c;编译型语⾔是指编译器针对特定的操作系统将源代码⼀次性翻译成可被该平台执⾏的机器码&#xff1b;解释型语⾔是指解释器对源程序逐…

【正在更新】从零开始认识语音识别:DNN-HMM混合系统语音识别(ASR)原理

摘要 | Abstract TO-BE-FILLED 1.前言 | Introduction 近期想深入了解语音识别(ASR)中隐马尔可夫模型(HMM)和深度神经网络-隐马尔可夫(DNN-HMM)混合模型&#xff0c;但是尽管网络上有许多关于DNN-HMM的介绍&#xff0c;如李宏毅教授的《深度学习人类语言处理》[1]&#xff0c;…

问题:超声波纵波斜入射时,当入射角大于第一临界角小于第二临界角时,在第二介质内只有折射横波。 #微信#经验分享#其他

问题&#xff1a;超声波纵波斜入射时&#xff0c;当入射角大于第一临界角小于第二临界角时&#xff0c;在第二介质内只有折射横波。 参考答案如图所示

SpringBoot 接入讯飞星火大模型实现对话

申请地址 https://xinghuo.xfyun.cn/sparkapi?scrprice 免费申请200万Token 开发文档 https://www.xfyun.cn/doc/spark/Web.html#_1-接口说明 页面最下面有相关demo可以参考 介绍 接口是以套接字的形式分段返回&#xff0c;而且非http请求&#xff0c;比较繁琐&#xff0c;官…