編譯命令:
第一步生成 onvif.h 檔案:
wsdl2h -o onvif.h -t ./typemap.dat remotediscovery.wsdl devicemgmt.wsdl analytics.wsdl analyticsdevice.wsdl media.wsdl deviceio.wsdl display.wsdl event.wsdl imaging.wsdl recording.wsdl replay.wsdl search.wsdl receiver.wsdl ptz.wsdl media2.wsdl
需要修改的地方(坑很多,所以要改):
後續編譯源**需要用到 duration.c 檔案,但是會遇到型別long64報錯的問題;
需要 生成標頭檔案時,在 typemap.dat 檔案中重新生成**
xsd__duration = #import 「custom/duration.h」 | xsd__duration
檢視typemap.dat檔案發現該段**是被注釋掉的,取消注釋就行了;
onvif.h 新增:
#import 「wsse.h」
網上的資料說onvif 如果需要鑑權就需要加上這段**,只能吐槽一下,這個工具不能自己新增嗎??
新增支援h265的**行 在typemap.data檔案中新增
tr2 =
tr2 可以自己隨便命名,以後關於h265介面的都會以tr2名字出現。這段也是網上某博主說的,和h265相關,我自己還沒驗證;反正官網上面media.wsdl的確是有2個檔案;所以我就新增了;
在使用 wsdl2h的時候可以加一些引數,最開始我是用-c -s生成 c的**,但是後續編譯原始檔始終報錯,所以我就去掉了 –c –s ,然後報錯就沒了==,具體原因還沒查到;
第二步 生成源**檔案:
soapcpp2 -2 -x onvif.h -i .\custom -i .\import -i …\gsoap
(這個命令的引數有點忘記了,之前記錄的txt檔案找不到了==)
-x 表示生成時不產生 xml檔案;
需要把custom目錄以及 import 目錄拷貝到 soapcpp2執行目錄下(\gsoap\bin\win32資料夾下), 還有乙個plugin資料夾,具體需不需要也不是特別清楚,沒有他也能編譯過
執行完後,會在執行路徑下生成源**:
取出來編譯; 最後我這邊一共是22個檔案;
編譯時 會報乙個錯:
需要吧 soapstub.h 檔案中的乙個巨集注釋掉:
// #define soap_wsa_2005
然後在專案使用時:
需要自己新增巨集定義(很多這方面的說明都在生成的原始檔的注釋中,所以很坑,別的開源專案至少會有乙個readme檔案指導你編譯==):
add_definitions(-dwith_openssl)
add_definitions(-dwith_dom)
gSOAP onvif初探(二) onvif鑑權
onvif開發乙個重要的部分就是鑑權,這點在前面第一篇生成soap框架 時就有提到。在標頭檔案裡加入鑑權的包含檔案 import wsse.h onvif要實現鑑權功能,有兩種方式 直接使用gsoap自帶的源 檔案 openssl庫 剪下部分上述檔案裡的必需 自實現鑑權功能。在window端就一般採...
編譯原理 編譯過程概述
編譯程式即是將高階語言書寫的源程式翻譯成與之等價的目標程式 組合語言或機器語言 其工作可分為六個階段,見下圖 對於編譯的各個階段,邏輯上可以劃分為前端和後端兩部分。前端包括詞法分析到中間 生成中各個階段的工作,後端則是優化及目標 生成的階段。以中間 為分水嶺的原因是把編譯過程分解為與機器有關和無關兩...
編譯選項 HarmonyOS編譯過程
全文約1300字,閱讀約需要4分鐘 編譯選項 編譯過程 python build.py wifiiot完成了hi3861開發板所需版本的編譯,這一篇具體說一下這個編譯過程。編譯選項 當前harmonyos一共支援四個引數 product 具體要編譯的專案 b build type release o...