onvif开发系列之--------onvif 框架代码生成

一、使用wsdl2h 生成.h文件

 http://www.onvif.org/Documents/Specifications.aspx

下载另存wsdl文件

使用wsdl2h -t typemap.dat -o onvif.h advancedsecurity.wsdl analytics.wsdl devicemgmt.wsdl event.wsdl receiver.wsdl replay.wsdl analyticsdevice.wsdl deviceio.wsdl display.wsdl media.wsdl remotediscovery.wsdl 

发现一直报找不到../../../onvif.xsd文件


打开wsdl文件,发现里面schemaLocation=“”居然是相对路径,也是醉了,改成绝对路径,schemaLocation="./onvif.xsd",解决问题。

二、利用生成的.h文件,生成框架代码

   打开生成的onvif.h 在#import 那加入一行代码 #import "wsse.h"用于鉴权

    soapcpp2 -j -2 -x onvif.h -I ../gsoap-2.8/gsoap/

(soapcpp2 -2 -L -x -i -d ../onvif_2.8.21_source/ -I../gsoap-2.8.21/gsoap/ -I../gsoap-2.8.21/gsoap/import/ onvif.h)
   结果报一个错
wsa5.h(288): **ERROR**: remote method name clash: struct/class 'SOAP_ENV__Fault' already declared at line 274
google一下发现有很多网友遇到同样的问题,直接注释掉就可以了。
生成的代码:

   52025  soapAdvancedSecurityServiceBindingProxy.cpp
   14852  soapAdvancedSecurityServiceBindingProxy.h
   48254  soapAdvancedSecurityServiceBindingService.cpp
    9668  soapAdvancedSecurityServiceBindingService.h
   46419  soapAnalyticsDeviceBindingProxy.cpp
   13994  soapAnalyticsDeviceBindingProxy.h
   43336  soapAnalyticsDeviceBindingService.cpp
    9196  soapAnalyticsDeviceBindingService.h
14975504  soapC.cpp*
  357069  soapDeviceBindingProxy.cpp
   88897  soapDeviceBindingProxy.h
  311090  soapDeviceBindingService.cpp
   44207  soapDeviceBindingService.h
   68699  soapDeviceIOBindingProxy.cpp
   19977  soapDeviceIOBindingProxy.h
   62653  soapDeviceIOBindingService.cpp
   11925  soapDeviceIOBindingService.h
   28246  soapDisplayBindingProxy.cpp
    8626  soapDisplayBindingProxy.h
   27159  soapDisplayBindingService.cpp
    6710  soapDisplayBindingService.h
 6257079  soapH.h
  376633  soapMediaBindingProxy.cpp
  105679  soapMediaBindingProxy.h
  332397  soapMediaBindingService.cpp
   51273  soapMediaBindingService.h
   47180  soapPullPointSubscriptionBindingProxy.cpp
   13964  soapPullPointSubscriptionBindingProxy.h
   41356  soapPullPointSubscriptionBindingService.cpp
    8846  soapPullPointSubscriptionBindingService.h
   23338  soapReceiverBindingProxy.cpp
    7175  soapReceiverBindingProxy.h
   22841  soapReceiverBindingService.cpp
    6053  soapReceiverBindingService.h
   12585  soapRemoteDiscoveryBindingProxy.cpp
    4438  soapRemoteDiscoveryBindingProxy.h
   13726  soapRemoteDiscoveryBindingService.cpp
    4824  soapRemoteDiscoveryBindingService.h
   15269  soapReplayBindingProxy.cpp
    5411  soapReplayBindingProxy.h
   15928  soapReplayBindingService.cpp
    5205  soapReplayBindingService.h
   30344  soapRuleEngineBindingProxy.cpp
    9061  soapRuleEngineBindingProxy.h
   28994  soapRuleEngineBindingService.cpp
    6933  soapRuleEngineBindingService.h
   18613  soapwsddProxy.cpp
   10336  soapwsddProxy.h
   12328  soapwsddService.cpp
    6002  soapwsddService.h

     其中的.nsmap都是一样的,留一个,改名为nsmap.h(名字随意)其他全删了。

三、添加gsoap包内需要用到的代码

       在gsoap包内找到stdsoap2.cpp,stdsoap2.h,wsaapi.c,wsaapi.h,wsddapi.d,wsddapi.h







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值