標籤:following static dir lib init 解決方案 樣本 利用 glib
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、 圖形處理類配置
以上配置可以滿足非圖形處理的需要,但是如若你的程式中的演算法需要處理圖片,比如你想做Face Service或則時物品檢測,需要讀取圖片,那麼請繼續往下看
可能在編譯時間遇見這樣的錯誤
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 foryour entire project.
So don’t #define it in one file. Instead, add it to theC/C++->Preprocessor->Preprocessor Definitions
field in Visual Studio’s Property Pages window so it takes effect for yourentire 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庫詳細配置安裝流程