歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 在沒有安裝OpenCV的電腦上運行基於OpenCV庫的程序

在沒有安裝OpenCV的電腦上運行基於OpenCV庫的程序

日期:2017/3/1 9:58:20   编辑:Linux編程

在沒有安裝OpenCV的電腦上,要運行基於OpenCV庫的程序,有兩種方法:一、動態鏈接:就是將OpenCv安裝目錄下的bin目錄下的*.dll文件與應用程序一起打包發布;二、靜態鏈接:就是將OpenCV庫源代碼先用cMake進行編譯,然後將opencv庫的源文件加到工程中一期編譯,也就是說最後生成的可執行文件可以單獨運行,不需要OpenCV的動態鏈接庫。

一、首先介紹第一種方法,動態鏈接,dll調用其中包括隱式調用和顯示調用

1 隱式調用一般需要:

聲明函數接口的.h文件——include文件夾裡的內容

鏈接動態庫的.lib文件——lib文件夾裡的內容以及Input->Additional Dependencies添加的XX.lib

動態鏈接庫.dll文件——bin文件夾的內容

這裡bin文件夾是在系統環境目錄裡的,所以執行代碼是exe文件可以找到。也可以添加在系統文件中,把需要用到的dll拷貝到exe同一個文件夾下即可。

所以,如果把未發布的工程拷貝到沒有opencv的電腦上,只要把需要用的函數相關的.h,.lib以及.dll文件考過去即可。

2 另一種調用dll的方式是顯示調用。

顯示調用是不需要.lib和.h文件的。是在代碼裡“顯示”加載要用到的函數。例如:

HINSTANCE hDLL=NULL;//生命DLL句柄

hDLL=LoadLibrary("opencv_core242d.dll"); //加載DLL

HMAT myImread=(HMAT)GetProcAddress(hDLL,"imread"); //使用DLL中的函數

這樣在拷貝工程時只拷貝用到的DLL文件就可以。

但這樣代碼寫得很麻煩,DLL換個名字版本之類的要改很多地方,一般用得不多。

如果只是給別人靜態鏈接的exe程序(比如一個demo,不用跑程序),那只要給別人dll文件就可以。

也就是將需要用到的dll文件拷到exe文件夾下即可,Release拷貝XX.dll,Debug版本拷貝XXd.dll

(所以我們寫Additional Dependencies不用到的盡量不寫,這樣拷的dll會少一些~)

Copyright © Linux教程網 All Rights Reserved