1. 程式人生 > >基於windows系統中visual studio2017的dlib庫詳細配置安裝流程

基於windows系統中visual studio2017的dlib庫詳細配置安裝流程

平臺 學習 mpi 好的 運行 安裝 說明文 完成 page

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即可

基於windows系統中visual studio2017的dlib庫詳細配置安裝流程