织梦CMS - 轻松建站从此开始!

罗索

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

落鹤生 发布于 2015-09-06 15:43 点击:次 
使用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文件
TAG: 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一下发现有很多网友遇到同样的问题,直接注释掉就可以了。
生成的代码:

  1.    52025  soapAdvancedSecurityServiceBindingProxy.cpp 
  2.    14852  soapAdvancedSecurityServiceBindingProxy.h 
  3.    48254  soapAdvancedSecurityServiceBindingService.cpp 
  4.     9668  soapAdvancedSecurityServiceBindingService.h 
  5.    46419  soapAnalyticsDeviceBindingProxy.cpp 
  6.    13994  soapAnalyticsDeviceBindingProxy.h 
  7.    43336  soapAnalyticsDeviceBindingService.cpp 
  8.     9196  soapAnalyticsDeviceBindingService.h 
  9. 14975504  soapC.cpp* 
  10.   357069  soapDeviceBindingProxy.cpp 
  11.    88897  soapDeviceBindingProxy.h 
  12.   311090  soapDeviceBindingService.cpp 
  13.    44207  soapDeviceBindingService.h 
  14.    68699  soapDeviceIOBindingProxy.cpp 
  15.    19977  soapDeviceIOBindingProxy.h 
  16.    62653  soapDeviceIOBindingService.cpp 
  17.    11925  soapDeviceIOBindingService.h 
  18.    28246  soapDisplayBindingProxy.cpp 
  19.     8626  soapDisplayBindingProxy.h 
  20.    27159  soapDisplayBindingService.cpp 
  21.     6710  soapDisplayBindingService.h 
  22.  6257079  soapH.h 
  23.   376633  soapMediaBindingProxy.cpp 
  24.   105679  soapMediaBindingProxy.h 
  25.   332397  soapMediaBindingService.cpp 
  26.    51273  soapMediaBindingService.h 
  27.    47180  soapPullPointSubscriptionBindingProxy.cpp 
  28.    13964  soapPullPointSubscriptionBindingProxy.h 
  29.    41356  soapPullPointSubscriptionBindingService.cpp 
  30.     8846  soapPullPointSubscriptionBindingService.h 
  31.    23338  soapReceiverBindingProxy.cpp 
  32.     7175  soapReceiverBindingProxy.h 
  33.    22841  soapReceiverBindingService.cpp 
  34.     6053  soapReceiverBindingService.h 
  35.    12585  soapRemoteDiscoveryBindingProxy.cpp 
  36.     4438  soapRemoteDiscoveryBindingProxy.h 
  37.    13726  soapRemoteDiscoveryBindingService.cpp 
  38.     4824  soapRemoteDiscoveryBindingService.h 
  39.    15269  soapReplayBindingProxy.cpp 
  40.     5411  soapReplayBindingProxy.h 
  41.    15928  soapReplayBindingService.cpp 
  42.     5205  soapReplayBindingService.h 
  43.    30344  soapRuleEngineBindingProxy.cpp 
  44.     9061  soapRuleEngineBindingProxy.h 
  45.    28994  soapRuleEngineBindingService.cpp 
  46.     6933  soapRuleEngineBindingService.h 
  47.    18613  soapwsddProxy.cpp 
  48.    10336  soapwsddProxy.h 
  49.    12328  soapwsddService.cpp 
  50.     6002  soapwsddService.h 

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

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

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

(zxycele)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201509/17380.html]
本文出处:CSDN博客 作者:zxycele 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容