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文件上右擊,點“屬性”,將預編譯頭設置改為不使用即可

 

 

如果遇見了這樣的問題:

***\dlib\all\source.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.

解決方法如下:

 

 

將注釋中的表示的缺少項加進去即可

如果報如下錯誤:

\dlib\dlib-19.4\dlib\image_loader\jpeg_loader.cpp(17): fatal error C1083: 無法打開包括文件: “jpeglib.h”: No such file or directory

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM