1. 下載所有wsdl與xsd
在onvif官網:https://www.onvif.org/profiles/specifications/
下載所有wsdl與xsd(右鍵-將鏈接另存爲即可)
2. 下載gsoap
https://sourceforge.net/projects/gsoap2/files/latest/download
下載的開源gsoap 已經編譯好的,不支持 SSL/TLS
3.創建生成框架目錄
4.生成onvif.h
將gsoap-2.8/gsoap/
中的/import、/plugin 、stdsoap2.h、 stdsoap2.cpp、 typemap.dat、 /bin/win64/soapcpp2.exe、 /bin/win64/wsdl2h.exe
複製到到GenerateSource/
路徑下,
在控制檯中輸入命令
.\wsdl2h.exe -x -o onvif.h -c++ -s -t ./typemap.dat accesscontrol.wsdl accessrules.wsdl actionengine.wsdl advancedsecurity.wsdl analytics.wsdl authenticationbehavior.wsdl credential.wsdl deviceio.wsdl devicemgmt.wsdl display.wsdl doorcontrol.wsdl event.wsdl imaging.wsdl media.wsdl media2.wsdl provisioning.wsdl ptz.wsdl receiver.wsdl recording.wsdl replay.wsdl schedule.wsdl search.wsdl thermal.wsdl uplink.wsdl
去掉部分 .wsdl文件, 只生成框架部分功能命令
.\wsdl2h.exe -x -o onvif.h -c++ -s -t ./typemap.dat remotediscovery.wsdl devicemgmt.wsdl event.wsdl media.wsdl media2.wsdl ptz.wsdl recording.wsdl
在onvif.h 文件中#import
位置添加 #import "wsse.h"
5.生成框架代碼
.\soapcpp2.exe -j onvif.h -x -L -C -c++ -i -I./import -I./plugin
執行報錯
wsa5.h(279): *WARNING*: Duplicate declaration of 'SOAP_ENV__Fault' (already declared at line 267)
wsa5.h(289): **ERROR**: service operation name clash: struct/class 'SOAP_ENV__Fault' already declared at wsa.h:277
解決報錯,打開文件import/ wsa5.h
將277行int SOAP_ENV__Fault
修改爲int SOAP_ENV__Fault_Ex
執行命令成功後,在目錄下會生成 .cpp
.h
.nsmap
文件,其中各個.nsmap
的文件內容是一樣的。
代碼中有用到.nsmap
,可將文件名改爲xxx.h
作爲頭文件,也可以不該直接#include "xxx.nsmap"
拷貝文件組成開發框架