日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

openvc学习笔记(4)——两种方法在没有环境下运行程序

發(fā)布時間:2024/4/15 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openvc学习笔记(4)——两种方法在没有环境下运行程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

參考博客: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]
  • HINSTANCE hDLL=NULL;//生命DLL句柄?? ?
  • hDLL=LoadLibrary("opencv_core242d.dll");? //加載DLL ?
  • HMAT myImread=(HMAT)GetProcAddress(hDLL,"imread");? //使用DLL中的函數(shù)?
  • 這樣在拷貝工程時只拷貝用到的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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。