linux下利用gsoap自动生成onvif详细步骤

废话不多说,以下步骤是我实践时记录的。如有什么问题,可联系我。

1、下载gSoap2.8.28
http://sourceforge.net/projects/gsoap2
gSoap官方网址:http://www.genivia.com/products.html
安装方法详见:http://www.genivia.com/downloads.html#Installing_gSOAP_on_Unix/Linux

2、修改typemap.dat
网上资料有说:在使用wsdl2h产生头文件前需要修改typemap.dat
修改的依据在这里:http://www.cs.fsu.edu/~engelen/soap.html,在FAQ页面下的How do I use gSOAP for the ONVIF specifications?
这里,我没有修改typemap.dat,用的是gsoap源码中自带的typemap.dat

3、根据onvif官网提供的remotediscovery.wsdl产生onvif.h头文件
关于onvif所有的wsdl都在这里:http://www.onvif.org/Documents/Specifications.aspx中的 ONVIF WSDL and XML Schemas Specifications一节,虽然可以全部下载为wsdl文件,但是wsdl文件中存在相互依赖的关系,并且是带有存储的依赖,所以最好直接使用 url来产生头文件,不要下载下来。
wsdl2h -c -t $(GSOAP_ROOT)/typemap.dat -o onvif.h \
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl \
http://www.onvif.org/onvif/ver10/events/wsdl/event.wsdl \
http://www.onvif.org/onvif/ver10/display.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/ver10/receiver.wsdl \
http://www.onvif.org/onvif/ver10/recording.wsdl \
http://www.onvif.org/onvif/ver10/search.wsdl \
http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl \
http://www.onvif.org/onvif/ver10/replay.wsdl \
http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl \
http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl \
http://www.onvif.org/ver10/actionengine.wsdl \
http://www.onvif.org/onvif/ver10/schema/onvif.xsd \
http://www.w3.org/2006/03/addressing/ws-addr.xsd

4、如果需要使用鉴权功能,需要添加”wsse.h”到onvif.h
#import “wsse.h”

5、使用onvif.h来产生骨架代码
soapcpp2 -cxT onvif.h -I$(GSOAP_ROOT)/import:$(GSOAP_ROOT):$(GSOAP_ROOT)/custom:.
其中-x为不生成xml, -T为自动生成服务端测试程序。

6、编译测试程序
上述步骤,会自动生成一个服务端测试程序,编译命令如下:
gcc -g -o server soapTester.o soapC.o soapServer.o stdsoap2.o duration.o
其中,stdsoap2.c和.h、duration.c和.h从gsoap源码中拷贝到编译目录下。

附:利用gsoap实现onvif代码框架

参考资料:
http://my.oschina.net/yunuo/blog/119206
http://blog.csdn.net/johnnywww/article/details/8556781
https://sourceforge.net/projects/onvifcpplib/?source=typ_redirect
http://blog.csdn.net/ghostyu/article/details/8432760
http://blog.csdn.net/ghostyu/article/details/8208428
http://blog.csdn.net/ghostyu/article/details/8182516
http://www.cs.fsu.edu/~engelen/soap.html
http://www.genivia.com/resources.html#How_do_I_use_gSOAP_for_the_ONVIF_specifications?
http://bbs.csdn.net/topics/390369929

声明:原创文章,转载版权所有© 转载时必须以链接形式注明作者和原始出处!

发表评论

电子邮件地址不会被公开。 必填项已用*标注