小弟初學者,最近自己在摸索一個小專案,關于海康SDK的二次開發,用的是C++builder 。在這之中的呼叫部分出了點問題。希望求助各位大神!

這是關于海康算子的說明書,其中要去創建一個句柄才能進行后面的步驟。我并不清楚其中的具體意義。我也只是按照一般呼叫步驟,從海康dll中生成C++builder可用的.lib檔案,將.dll .lib .h加入工程中。在.cpp檔案開頭進行宣告

接下來的問題有幾點,首先是我用button控制元件去觸發呼叫函式,在button中 應該怎樣寫具體的內容呢(之前的視覺部分算子我是自己用halcon寫過一些簡單的,也呼叫成功了。但是這次不知道該如何呼叫了。畢竟之前的只需要通過全域變數匯入圖片和輸出結果,再在button里面加一個action(); 就可以了)?
第二是在網上查到的動態靜態方法我試驗過,存在一些問題,也不清楚是我的語法問題還是算子的呼叫方式有問題。例如:

希望各位大神不吝賜教!小弟在此十分感謝!
uj5u.com熱心網友回復:
首先要把回傳的handle保存起來,用全域變數,或者主表單的成員變數也可以。鏈接時符號沒找到,庫已經添加到工程了,要么是庫的路徑沒設定,要么庫格式有問題。如果你是建的32位專案,要用implib建立匯入庫,如果64位,要用mkexp。
uj5u.com熱心網友回復:
我用海康的介面,用過兩種方式,都是正常的。方式1:直接采用動態庫呼叫方式,把自己用到的介面函式都要單獨寫一遍動態加載的方式。運行正常,就是復雜點。
方式2:將HCNetSDK.lib復制到bcb的bin目錄,運行coff2omf -lib:ms HCNetSDK.lib bcb HCNetSDK_BCB.lib,生成一個lib檔案,將這個lib庫加到自己的專案中。#include "HCNetSDK.h"也需要宣告一下,使用時直接可以按照C的函式來使用,非常方便。
方式3:將HCNetSDK.dll復制到bcb的bin目錄,運行implib -af HCNetSDK_BCB.lib HCNetSDK.dll,生成的lib庫使用時會報錯。我就沒再研究怎么用了。
uj5u.com熱心網友回復:
您好!關于方式1,可否給一個動態呼叫的實體代碼?我自己目前寫的都是參照資料,有些并沒有解釋得很清楚。您的方式3我也試過了,用implib生成的dll檔案目前確實會有問題(尚不確定是語法問題還是lib問題)。關于您的方式2,我是把coff2omf這個應用程式移到了別處生成lib,復制到同一目錄,然后右鍵project ,add .lib ;同時在.cpp前面也宣告了#include "iMVS-6000PlatformSDKC.h" ,報錯和帖子里的圖一樣...
uj5u.com熱心網友回復:
您好!庫的路徑已經設定
implib和coff2omf這兩個工具都已經試過了,錯誤提示和原帖中的一樣,無法鏈接(我是把這兩個工具復制到別的地方,生成的lib檔案)。至于是32 還是 64 位的專案,請問該怎么辨別呢?
uj5u.com熱心網友回復:
你這個可能是老版本吧,那就只有32位的。設定庫路徑:project->options->C++(shared options)右邊library pathuj5u.com熱心網友回復:
implib -a f HCNetSDK_BCB.lib HCNetSDK.dll,用這個就行了,直接由海康的DLL,生成BCB能用的LIB檔案但是有一點,你不要使用-a引數,直接使用:
implib HCNetSDK.lib HCNetSDK.dll 就行了,lib檔案不要改檔案名,檔案名和dll檔案名相同
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/42642.html
上一篇:從熱門新聞“微信封號→申訴無果→當事人走向極端”淺談資料安全
下一篇:求指點
