ONVIF的多个wsdl定义重复问题

最近在弄ONVIF,首先看了下gsoap生成web service的代码结构,然后通过ONVIF官网上wsdl生成代码框架。

wsdl2h -c -a -t ./typemap.dat -N onvif -n onvif -o onvif.h \
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl \
http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl \
http://www.onvif.org/onvif/ver10/deviceio.wsdl \
http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl \
http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl \
http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl \
http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl \
http://www.onvif.org/onvif/ver10/schema/onvif.xsd

soapcpp2 -2 -c -L -d ../onvif/ -n -p onvif -s onvif.h -I /usr/share/gsoap/ -I /usr/share/gsoap/import

做onvif,生成代码框架后,需要的就是链接生成可执行文件,然后跑一下看看,体验理解一下开发过程。

所以呢,我们可以对需要实现的operations写个空实现,例如int __trt__RemoveVideoAnalyticsConfiguration(...){return SOAP_OK;}

然后搭建工程编译,写个main函数调用soap函数链接起来看一下能不能跑。有编译链接错误的解决一下就好了。


目前已经能用lighttpd+fastcgi+onvif_server进行开发调试了。


不过今天发现这样生成的代码框架有问题,里面有些operation重复定义了,导致会生成诸如__trt__GetVideoSources和__trt__GetVideoSources_两个函数,但实际上是定义的同一个trt:GetVideoSources的处理函数,这里会生成很多无用的代码,导致增大了代码大小,所以这里要想下办法找原因做个裁剪。

晚上写了个脚本,对每个wsdl都生成一下.h代码,然后找出存在重复的地方,原来是deviceio.wsdl生成的代码中有153个函数与devicemgmt.wsdl media.wsdl生成的代码中重复了。所以做onvif,wsdl应该还是要修改的,暂时还没有好的方案,明天试一下合并wsdl看能不能解决问题??

你可能感兴趣的:(ONVIF的多个wsdl定义重复问题)