ONVIF调试笔记——生成代码框架

参考链接:
ONVIF协议网络摄像机(IPC)客户端程序开发(6):使用gSOAP生成ONVIF框架代码
Onvif开发之代码框架生成篇

一、使用本地的wsdl文件生成Onvif框架代码

1.下载wsdl文件并解压
下载地址1:python-onvif
下载地址2:wsdl_2.4.2.zip

2.下载gsoap并解压
下载地址1:gsoap.zip
下载地址2:gsoap_2.8.103.zip

3.把解压后的wsdl文件拷贝到gsoap-2.8\gsoap目录下

4.把gsoap-2.8\gsoap\bin目录中的wsdl2h.exe、soapcpp2.exe文件拷贝到gsoap-2.8\gsoap目录下

5.使用wsdl2h工具,根据WSDL生成onvif.h头文件
wsdl2h -c -s -t typemap.dat -o onvif.h remotediscovery.wsdl devicemgmt.wsdl analytics.wsdl analyticsdevice.wsdl
media.wsdl deviceio.wsdl display.wsdl event.wsdl imaging.wsdl recording.wsdl replay.wsdl search.wsdl receiver.wsdl ptz.wsdl

各个选项的含义,可通过wsdl2h.exe -help查看帮助。其中-c为产生纯c代码,不然为c++代码;-s为不使用STL库,-t为typemap.dat的标识。

6.因「鉴权(认证)」需要,修改onvif.h头文件
在onvif.h头文件中增加
#import “wsse.h”

7.修改wsa5.h,解决编译报错
“wsa5.h(288): **ERROR**: service operation name clash: struct/class ‘SOAP_ENV__Fault’ already declared at wsa.h:273”
修改import\wsa5.h文件,将int SOAP_ENV__Fault修改为int SOAP_ENV__Fault_alex

8.使用soapcpp2工具,根据头文件产生框架代码
soapcpp2 -2 -c onvif.h -x -I ./import

//soapcpp2命令的相关命令参数如下:(可以根据自己的实际需要添加不同参数)
-2 //采用SOAP1.2,和SOAP1.0版本不同,会导致搜索工具搜索不到
-x //不产生xml文件(可用可不用,xml有一定帮助,但是太多)
-I //为引入路径
-C //只产生客户端代码(注意:C是大写,不推荐有此命令)

生成的onvif代码框架
onvif基本代码框架.zip

生成后的文件列表:
AnalyticsDeviceBinding.nsmap
DeviceBinding.nsmap
RemoteDiscoveryBinding.nsmap
RuleEngineBinding.nsmap
soapC.c
soapClient.c
soapClientLib.c
soapH.h
soapServer.c
soapServerLib.c
soapStub.h
wsdd.nsmap

发表评论

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