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://www.rhkb.cn/news/255135.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker常用10条容器操作命令

Docker 中一些常用的容器操作命令&#xff0c;我们可以根据需要使用这些命令来管理和操作 Docker 容器。我们这次以Hell-world这个镜像为例来说明&#xff1a; 1. docker pull hello-world #拉取hell-world镜像 2. docker images # 查看本地拉取的镜像 或者可以用 docker im…

离线数仓(一)【数仓概念、需求架构】

前言 今天开始学习数仓的内容&#xff0c;之前花费一年半的时间已经学完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基础组件。把学过的内容用到实践这是最重要的&#xff0c;相信会有很大的收获。 1、数据仓库概念 1.1、概念 数据仓库&#x…

代码随想录算法训练营day15||二叉树part02、102.二叉树的层序遍历、 226.翻转二叉树(优先掌握递归)、101. 对称二叉树 (优先掌握递归)

102.二叉树的层序遍历 题目&#xff1a;给你一个二叉树&#xff0c;请你返回其按 层序遍历 得到的节点值。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 接下来我们再来介绍二叉树的另一种遍历方式&#xff1a;层序遍历。 层序遍历一个二叉树。就是…

计算机视觉 | OpenCV 实现手势虚拟控制亮度和音量

Hi&#xff0c;大家好&#xff0c;我是半亩花海。在当今科技飞速发展的时代&#xff0c;我们身边充斥着各种智能设备&#xff0c;然而&#xff0c;如何更便捷地与这些设备进行交互却是一个不断被探索的课题。本文将主要介绍一个基于 OpenCV 的手势识别项目&#xff0c;通过手势…

【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏3(附项目源码)

最终效果 文章目录 最终效果系列目录前言随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第24篇中,我们将探索如何用unity制作一…

ClickHouse--02--安装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 安装官网 &#xff1b;[https://clickhouse.com/docs/zh/getting-started/install](https://clickhouse.com/docs/zh/getting-started/install)![在这里插入图片描述…

Hadoop-IDEA开发平台搭建

1.安装下载Hadoop文件 1&#xff09;hadoop-3.3.5 将下载的文件保存到英文路径下&#xff0c;名称一定要短。否则容易出问题&#xff1b; 2&#xff09;解压下载下来的文件&#xff0c;配置环境变量 3&#xff09;我的电脑-属性-高级设置-环境变量 4.详细配置文件如下&#…

使用navicat导出mysql离线数据后,再导入doris的方案

一、背景 doris本身是支持直接从mysql中同步数据的&#xff0c;但有时候&#xff0c;客户不允许我们使用doris直连mysql&#xff0c;此时就需要客户配合将mysql中的数据手工导出成离线文件&#xff0c;我们再导入到doris中 二、环境 doris 1.2 三、方案 doris支持多种导入…

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 静态开辟内存 通过前面的学习&#xff0c;我们已经掌握了两种开辟内存的方…

ruoyi-nbcio中xxl-job的安装与使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a; http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbach…

Netty应用(四) 之 Reactor模型 零拷贝

目录 6.Reactor模型 6.1 单线程Reactor 6.2 主从多线程Reactor (主--->Boss | 从--->Worker | 一主多从机制) 7.扩展与补充 8.Reactor模型的实现 8.1 多线程Reactor模型的实现&#xff08;一个Boss线程&#xff0c;一个Worker线程&#xff09; 8.2 多线程Reactor模…

Python程序员面试题精选及解析(2)

本文精心挑选了10道Python程序员面试题&#xff0c;覆盖了Python的多个核心领域&#xff0c;包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例&#xff0c;帮助读者更好地理解和应用相关知识点无论是对…

【Java EE初阶十一】文件操作(IO)

1. 认识文件 所谓的文件是一个广义的概念&#xff0c;可以代表很多东西&#xff1b;在操作系统里面&#xff0c;会把很多的硬件设备和软件设备都抽象成“文件”&#xff0c;统一进行管理&#xff1b;但是大部分情况下&#xff0c;我们读到的文件&#xff0c;都是指硬盘的文件&a…

Codeforces Round 106 D. Coloring Brackets 【区间DP + 记忆化搜索实现】

D. Coloring Brackets 约定 ∣ S ∣ ≤ 700 |S| \leq 700 ∣S∣≤700 题意 给定一个正则括号序列 s s s&#xff0c;我们需要求出合法的染色方案数。合法的条件为&#xff1a; 每个符号要么不染色&#xff0c;要么染红色&#xff0c;要么染蓝色对于每对配对的括号&#xf…

单片机与外设的交互

单片机与外设的交互是嵌入式系统中非常重要的一个基础知识点。单片机是一个集成在同一芯片上的中央处理器、存储器和输入/输出接口,它可以根据用户编写的程序与各种外部设备即外设进行交互。单片机与外设之间的交互主要通过单片机上的输入/输出口(I/O口)来实现。 I/O口的工作原…

【golang】24、go get 和 go mod:indrect 与 go mod tidy

文章目录 go get 会执行如下操作&#xff1a; 操作 go.mod 文件&#xff08;add、update、remove&#xff09;下载依赖到 $GOPATH/pkg/mod 中若已安装&#xff0c;则更新该包&#xff0c;到最新版本 试验前置准备&#xff1a;首先删除已下载的依赖&#xff0c;rm -rf $GOPATH…

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

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

Redis(三)主从架构、Redis哨兵架构、Redis集群方案对比、Redis高可用集群搭建、Redis高可用集群之水平扩展

转自 极客时间 Redis主从架构 redis主从架构搭建&#xff0c;配置从节点步骤&#xff1a; 1、复制一份redis.conf文件2、将相关配置修改为如下值&#xff1a; port 6380 pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件 logfile "6380.log" …

JAVA设计模式之策略模式详解

策略模式 1 策略模式概述 策略模式(strategy pattern)的原始定义是&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。 其实我们在现实生活中常常遇到实现某种目标存在多种策略…

【机器学习】机器学习简单入门

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…