終於弄清楚了opencv的配置原理了

配置步驟

設置環境變量

即設置【(雙擊)計算機】->【系統屬性】->【高級系統設置】->【高級(標籤)】->【環境變量】->path
…… opencv\build\x86\vc10\bin
…….opencv\build\x64\vc10\bin

原理:設置opencv的動態鏈接庫.dll文件所在的目錄,用於運行時動態載入。

設置包含目錄

即【通用屬性】 ->【VC++目錄】 ->【包含目錄】
D:\Program Files\opencv\build\include\opencv2
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include

設置庫目錄

即【通用屬性】 ->【VC++目錄】 ->【庫目錄】
D:\Program Files\opencv\build\x86\vc10\lib

原理:設置opencv的動態鏈接庫的引入庫文件(.lib),用於編譯時鏈接,包含了dll索引信息,記錄了dll中函數的入口和位置,而dll中是函數的具體內容(path已經給定其位置)。注意設置庫目錄和設置附加依賴項一起才能告訴鏈接器鏈接哪個附加依賴項。

說明:一般可能誤認爲對於32位系統,這裏選擇X86,而對於64位系統這裏要選擇X64。其實這樣理解是不對的,我們不用管操作系統是多少位的,只看我們用的是32位的編譯器還是用64位的編譯器,即我們在編譯程序時使用的是哪個編譯器。
D: \Program Files\opencv\build\x64\vc11\lib(編譯64位軟件時)
D: \Program Files\opencv\build\x86\vc11\lib(編譯32位軟件時)
二者只能添加一個,都添加上會出錯

設置附加依賴項

即【通用屬性】 ->【鏈接器】->【輸入】->【附加的依賴項】
opencv_calib3d2413d.lib
opencv_contrib2413d.lib
opencv_core2413d.lib
opencv_features2d2413d.lib
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib
opencv_legacy2413d.lib
opencv_ml2413d.lib
opencv_nonfree2413d.lib
opencv_objdetect2413d.lib
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_ts2413d.lib
opencv_video2413d.lib
opencv_videostab2413d.lib

opencv_calib3d2413.lib
opencv_contrib2413.lib
opencv_core2413.lib
opencv_features2d2413.lib
opencv_flann2413.lib
opencv_gpu2413.lib
opencv_highgui2413.lib
opencv_imgproc2413.lib
opencv_objdetect2413.lib
opencv_superres2413.lib
opencv_stitching2413.lib
opencv_photo2413.lib
opencv_ocl2413.lib
opencv_nonfree2413.lib
opencv_ml2413.lib
opencv_legacy2413.lib
opencv_ts2413.lib
opencv_video2413.lib
opencv_videostab2413.lib
Debug文件庫名有d結尾,Release沒有

原理:設置庫目錄—Tells the linker where to look for libraries. 設置附加依賴項—Tells the linker what libraries to look for in those directories. 注意設置庫目錄和設置附加依賴項一起才能告訴鏈接器鏈接哪個附加依賴項。

VS屬性設置

注意Microsoft.Cpp.Win32.user和Microsoft.Cpp.x64.user屬性表單是全局的,注意查看屬性對話框的名字。

這裏寫圖片描述

上面兩個屬性表單在C:\Users\xxxx\AppData\Local\Microsoft\MSBuild\v4.0

這裏寫圖片描述

還有VS的屬性是有繼承關係的,屬性繼承:
1. 項目屬性已分層。 每層繼承前一層的值,但是繼承的值可以通過設置屬性顯式重寫。 這是基本的繼承樹:
來自 MSBuild CPP 工具集的默認設置(..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props,由 .vcxproj 文件導入。)
2. 屬性表
3. .vcxproj 文件。(可能重寫默認設置和屬性頁設置。)
4. 項元數據

提示:在屬性頁中,加粗的屬性在當前上下文中定義。 普通字體的屬性將被繼承

參考鏈接

http://blog.sina.com.cn/s/blog_6dd65c6f0100vveq.html
http://www.cppblog.com/amazon/archive/2009/09/04/95318.html
https://msdn.microsoft.com/zh-cn/library/669zx6zc(v=vs.120).aspx
http://blog.csdn.net/u013058751/article/details/52237588
另外可以參考opencv庫自帶的教程opencv_tutorials.pdf的1.5節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章