專案中用到了海康的一款網路攝像頭,基於專案自身需求編寫軟體需要用到海康提供的sdk,通過檢視海康提供的示例,決定在第乙個分功能示例的基礎上進行程式編寫。由於我們並沒有使用雲台,因此將其中的雲台控制相關部分裁剪掉即可得到乙個簡單的影象資料採集、儲存及抓圖軟體。
我採用的開發環境是visual studio 2015,首先需在專案屬性中設定好標頭檔案及庫檔案路徑,並設定好到入庫,我這裡只新增了hcnetsdk.lib在聯結器的輸入附加依賴項中。程式實現了ip,埠號,使用者名稱和密碼的設定以及預覽、錄影及抓圖功能,全部可在示例中找到相關**,在此不再贅述。下面主要將我遇到的問題總結如下:
在編寫完所有功能**後首次編譯,彈出錯誤碼為107,通過度娘找到網友們的解決方案,將庫檔案中的hcnetsdkcom資料夾和其他dll一樣也拷貝至exe檔案所在路徑下。這樣再次編譯後又彈出錯誤碼為3,即sdk未初始化,我是基於對話方塊編寫的程式,可在oninitdialog()中通過net_dvr_init()實現sdk的初始化,這個錯誤絕對不應該!因為這是使用sdk進行開發首先要做的。好吧,改好之後進行第三次編譯,再一再二不再三,恩,應該可以了。可是納尼?有出錯了,錯誤碼64,載入當前目錄下sdk出錯。難道還缺庫檔案,索性將庫檔案目錄下的dll檔案全都拷貝過來,第四次編譯,錯誤碼又程式設計4了,這是通道號錯誤,裝置沒有對應的通道號。回過頭在建構函式中檢查,原來講通道號初始化成了1,將其改為0,第五次編譯,終於成功了!
回過頭來剛才報錯64的時候我將所有dll都拷貝過來之後問題解決,但問題是有可能只是某個或某幾個庫的缺失帶來的此錯誤,經過幾輪測試,最終確定只需拷貝superrender.dll和audiorender.dll即可。
另外,我將綜合示例也移植到了vs2015下,當然,要對sln檔案和vcxproj檔案做如下修改:
1、修改sln檔案中第一行中的版本號,由12.0改為14.0,第二行的vs2013改為2015,第三行的版本號12.0.21005.1改為14.0.25420.1;
2、將clientdemo.vcxproj中第二行的版本由12.0改為14.0;
這樣修改後在vs2015下開啟,編譯報錯:
雙擊錯誤定位到dllexport_api所在的行,說明此巨集的定義可能有錯誤,後來檢視hcnetsdk.h檔案,發現此巨集定義如下:
#define dllexport _api extern"c"_declspec(dllexport),,可以看到問題就出在這裡,「c」與_declspec(dllexport)之間缺少空格。修改後再次編譯就沒有問題了。
海康威視二次開發筆記
首先設定頁面寬高 var oplugin oplugin 其次傳遞引數 var oliveview oliveview var szdeviceidentify oliveview.szip oliveview.szport function 初始化外掛程式引數及插入外掛程式 webvideoctr...
postek二次開發 POSTEK二次開發介面
例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...
mcms二次開發 YzmCMS二次開發手冊
摘要 yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有一.yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口...