openvc学习笔记(4)——两种方法在没有环境下运行程序
?
參考博客:http://blog.csdn.net/xiaowei_cqu/article/details/8066329
OpenCV的安裝總結(jié)
我們下載的OpenCV安裝包一般包括源碼,示例,文檔和編譯好的動態(tài)鏈接庫
?
我們寫代碼如果調(diào)用OpenCV的函數(shù),必須對所用的vc需要添加附加依賴項:(我用的vs2008,vs2010可能不一樣)
第一步:配置include路徑
“工具”->“選項”->“項目和解決方案”->“VC++目錄”
->“包含文件”,
Include Directories :C:\OpenCV\OpenCV-2.4.2\build\include
即告訴VC去什么地方尋找OpenCV的頭文件,打開VC
第二步:配置lib路徑
->“庫文件”
Library Diractories:C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\lib
即告訴VC去什么地方尋找OpenCV的庫文件
第三步:設(shè)置環(huán)境變量
兩個bin文件夾: C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\bin C:\OpenCV\OpenCV-2.4.2\build\common\tbb\ia32\vc10 添加到系統(tǒng)環(huán)境目錄
第四步:附加依賴項
然后還需要在Linker->Input->Additional Dependencies
里添加會用到的各種XX.lib,XXd.lib
還有把 有的安裝教程里還會教我們在Source Directories添加OpenCV的源碼文件,
關(guān)于簡化以上幾步
第一步、第二部是默認配置設(shè)置一次即可
第二部可以在代碼中加入
#pragma? comment(lib,"cxcore200d.lib")
#pragma? comment(lib,"cv200d.lib")
#pragma? comment(lib,"highgui200d.lib")
就不用再添加了
?
?
其實是不需要的。因為實際調(diào)用OpenCV里的函數(shù)是用的dll的隱式調(diào)用方式。
DLL調(diào)用
隱式調(diào)用一般需要:
聲明函數(shù)接口的.h文件——include文件夾里的內(nèi)容
鏈接動態(tài)庫的.lib文件——lib文件夾里的內(nèi)容以及Input->Additional Dependencies添加的XX.lib
動態(tài)鏈接庫.dll文件——bin文件夾的內(nèi)容 這里bin文件夾是在系統(tǒng)環(huán)境目錄里的,所以執(zhí)行代碼是exe文件可以找到。
也可以添加在系統(tǒng)文件中,把需要用到的dll拷貝到exe同一個文件夾下即可。
所以,如果把未發(fā)布的工程拷貝到?jīng)]有opencv的電腦上,只要把需要用的函數(shù)相關(guān)的.h,.lib以及.dll文件考過去即可。
?
另一種調(diào)用dll的方式是顯示調(diào)用:
顯示調(diào)用是不需要.lib和.h文件的,只會用到dll文件。
但需要在代碼里“顯示”加載要用到的函數(shù)。例如:
[cpp]這樣在拷貝工程時只拷貝用到的DLL文件就可以。
但這樣代碼寫得很麻煩,DLL換個名字版本之類的要改很多地方,一般用得不多。
?
靜態(tài)編譯的exe程序
如果只是給別人靜態(tài)鏈接的exe程序,比如一個demo,不用跑程序。
最常用的方法就是一起拷貝exe和dll文件到目標電腦: 也就是將需要用到的dll文件拷到exe文件夾下即可,Release拷貝XX.dll,Debug版本拷貝XXd.dll (所以我們寫Additional Dependencies不用到的盡量不寫,這樣拷的dll會少一些~)
再一種方法就是把OpenCV的源碼一起編譯到可執(zhí)行文件中。
這種需要在寫代碼時把OpenCV的源文件加入到工程中。也就是用到的.cpp文件目錄添加到Source Directories項中。 編譯頭文件可能會遇到"找不到文件結(jié)尾”之類的錯誤,在項目屬性Category中選擇"Precompiled Headers"和"Not using precompiled headers"即可。
這樣工程不是調(diào)用的OpenCV編譯過的dll文件,而是把OpenCV當成你自己寫的文件一樣一起編譯。
在沒有安裝OpenCV的電腦上只用拷貝最終的exe文件即可。不需要dll文件,只是生成的exe會比較大~
轉(zhuǎn)載于:https://www.cnblogs.com/happycaoyue/archive/2013/04/09/3010578.html
總結(jié)
以上是生活随笔為你收集整理的openvc学习笔记(4)——两种方法在没有环境下运行程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gdb 的使用方法
- 下一篇: hdu 1233 还是畅通工程(最小生成