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"

拷贝文件组成开发框架
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐