1.安装gsoap
sudo apt install gsoap libgsoap-dev
2.下载(onvif官网下载)
3.生成onvif.h
编辑typedef.dat, 去掉改行注释:
xsd__duration = #import "custom/duration.h" | xsd__duration
wsdl2h -o onvif.h -t /usr/share/gsoap/WS/typemap.dat ./wsdl/accesscontrol.wsdl ./wsdl/accessrules.wsdl ./wsdl/actionengine.wsdl ./wsdl/advancedsecurity.wsdl ./wsdl/analytics.wsdl ./wsdl/analyticsdevice.wsdl ./wsdl/appmgmt.wsdl ./wsdl/authenticationbehavior.wsdl ./wsdl/bw-2-vs-mod.wsdl ./wsdl/credential.wsdl ./wsdl/deviceio.wsdl ./wsdl/devicemgmt.wsdl ./wsdl/display.wsdl ./wsdl/display2.wsdl ./wsdl/doorcontrol.wsdl ./wsdl/event.wsdl ./wsdl/event-vs.wsdl ./wsdl/federatedsearch.wsdl ./wsdl/imaging.wsdl ./wsdl/media.wsdl ./wsdl/media2.wsdl ./wsdl/provisioning.wsdl ./wsdl/ptz.wsdl ./wsdl/receiver.wsdl ./wsdl/recording.wsdl ./wsdl/replay.wsdl ./wsdl/schedule.wsdl ./wsdl/search.wsdl ./wsdl/security.wsdl ./wsdl/thermal.wsdl ./wsdl/uplink.wsdl ./wsdl/remotediscovery.wsdl
4.onvif.h添加引用
add #import "wsse.h" in the onvif.h
5.修改wsa5.h
修改/usr/share/gsoap/import/wsa5.h文件,将int SOAP_ENV__Fault修改为int SOAP_ENV__Fault_alex
6.生成cpp和h
mkdir onvif (创建文件夹)
soapcpp2 -2 -L -x -i -I/usr/share/gsoap -I/usr/share/gsoap/import -I/usr/share/gsoap/custom -d./onvif onvif.h
7.gsoap "undefined reference to `namespaces'"
需要增加namespace.cpp,内容为 #include "DeviceBinding.nsmap"