dlib庫+vs2017詳細配置流程

dlib庫是一個很是強大的開源庫,有詳細的說明文檔和c++代碼,也提供了一些和python的接口,可是安裝和配置的過程略有些麻煩,網上有一些相關教程,可是大都零零星星不全面。筆者親自把全部的坑都踩了一遍,整理出了比較全面的教程,供你們參考html

一、        下載安裝包python

先在dlib網站上下載最新的庫文件http://dlib.net/,左邊的一列是菜單欄,包括了dlib的使用場景、編譯換幾個、python接口等各類詳細說明,能夠看出該庫的應用場景包括API打包、圖像處理、線性代數、機器學習、網絡編程等幾個大場景,每一個場景之下又有小的分類,不由感嘆dlib庫 的強大。c++

 

 

我下載的是dlib-19.7,將文件解壓,將解壓後的文件夾放置與任意文件夾下,路徑中不要包含中文算法

二、        創建控制檯工程編程

打開visual studio 2017(其餘版本的配置過程相似),創建控制檯工程。這時若是直接將example中的代碼直接拷貝進去,就會報各類錯誤,首先錯誤就是沒法進入找到dlib庫文件中的各類頭文件api

 

 

 

三、        包含dlib對應文件夾網絡

咱們須要在項目屬性中添加上剛纔解壓好的lib路徑,注意添加的是dlib-19.7而不是dlib-19.7/dlib,由於前者包含了除dlib庫以外的不少內容,爲避免之後麻煩,這裏直接包含dlib-19.7app

右側解決方案資源管理器,在項目上右擊鼠標->屬性->VC++目錄,包含目錄、引用目錄、庫目錄均添加上dlib-19.7文件夾路徑,點擊確認機器學習

 

 

 

四、        添加dlib.lib工具

這時能夠發現以前紅紅色波浪線的錯誤都已經不在了,可是進行編譯時,會出現以下的錯誤,

 

 

大概讀一下錯誤內容以及錯誤類型,能夠判斷是由於缺乏dlib.lib文件致使的。下面須要製做dlib.lib,固然網上也有,可是不必定時最新的dlib,建議本身製做,也不麻煩

五、        製做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

 

 

六、        添加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 進行編譯

則按照以下方式解決

 

 

七、成功運行

直接運行示例程序(http://dlib.net/gui_api_ex.cpp.html),能夠獲得這樣的一個圖形用戶界面,能夠看出這是一個用鼠標單擊而且進行計數的一個程序,每次點擊button,都會是的數字加一

 

 

 

七、        圖形處理類配置

以上配置能夠知足非圖形處理的須要,可是如若你的程序中的算法須要處理圖片,好比你想作人臉識別或則時物品檢測,須要讀取圖片,那麼請繼續往下看

可能在編譯時碰見這樣的錯誤

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

相關文章
相關標籤/搜索