Gsoap及开发框架生成:

一:gsoap下载和编译
 
2.安装:  ./configure --prefix=你的安装目录 
                make
                make install
二:在线生成onvif.h(笔者试了离线生成,各种报错,所以劝各位还是在线生成)
wsdl2h -o onvif.h -c -s -t ./typemap.dat http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.onvif.org/onvif/ver10/event/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/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/ver10/pacs/accesscontrol.wsdl http://www.onvif.org/ver10/pacs/doorcontrol.wsdl 
注:离线报错如下

1)使用wsdl2h出现    Reading file 'accesscontrol.wsdl'... 
Cannot open 'types.xsd' to retrieve schema

我这个问题是因为把onvif的 accesscontrol.wsdl 这个文件下载到本地,然后直接 wsdl2h accesscontrol.wsdl -o accesscontrol.h  出现的,我换一种做法,就是直接在wsdl2h 后面加上wsdl文件所在的URL,wsdl2h http://www.onvif.org/ver10/pacs/accesscontrol.wsdl -o accesscontrol.h 这个问题就没有啦。具体什么原因我也不知道是为什么。

如果直接生成对应C的库文件会发生重复定义错误,可以修改该文件。

wsa5.h(288): **ERROR**: remote method name clash: struct/class 'SOAP_ENV__Fault' already declared at line 274

打开文件gsoap_2.8.16/gsoap-2.8/gsoap/import/ wsa5.h

将277行int SOAP_ENV__Fault修改为int SOAP_ENV__Fault_alex

笔者没有使用这种方法,是将这个结构体直接注释的方式,最后的结果是,都可以使用。

同时上一步生成的onvif.h文件中没有打开wsse.h, 导致最后生成代码中SOAP_ENV__Header 结构体中缺少定义 wsse__Security数据段,无法进行鉴权命令。

即:添加对openssl的支持,在上一步生成的onvif.h中添加(可选)

  1. #import "wsse.h"

随后使用命令生成:

  1. soapcpp2  -c onvif.h -x -I/root/Tools/Gsoap/gsoap-2.8/gsoap/import -I/root/Tools/Gsoap/gsoap-2.8/gsoap/ -I/root/Tools/Gsoap/gsoap-2.8/gsoap/custom -I/root/Tools/Gsoap/gsoap-2.8/gsoap/extras -I/root/Tools/Gsoap/gsoap-2.8/gsoap/plugin

通过上面的两个步骤的话,onvif的基本代码框架就已经有了,里面可能有就开发而已不需要的文件,可以直接删除掉,还有一些文件需要从gsoap里面拷贝过来
        1.修改wsdd.nsmap文件名为wsdd.h,删掉其他所有的nsmap文件(rm *.nsmap),命令空间文件文件都差不多,保留一个即可,需要的时候包含此文件就好
        2.直接删除soapClientLib.c和soapServerLib.c文件,在开发过程中没有实际用处
        3.将gsoap-2.8.14/gsoap-2.8/gsoap下的stdsoap2.h和stdsoap2.c文件和gsoap-2.8.14/gsoap-2.8/gsoap/custom下的duration.cw文件都拷贝到当前目录下
        4.如果是作客户端的开发的话,则删掉soapServer.c文件,不然的话,里面调用的很多接口只是写了申明了函数原型,而没有实现,需要服务端开发来实现的,剩余客户端开发代码如下(服务端的话,多一个soapServer.c文件)
剩下有效的源码文件如下:

  1. -rwxr-xr-x 1      6560 2013-12-25 10:44 duration.c*
  2. -rw-r--r-- 1   2410694 2013-12-25 10:07 onvif.h
  3. -rw-r--r-- 1  11308204 2013-12-25 10:14 soapC.c
  4. -rw-r--r-- 1    713192 2013-12-25 10:14 soapClient.c
  5. -rw-r--r-- 1   4882158 2013-12-25 10:14 soapH.h
  6. -rw-r--r-- 1    855676 2013-12-25 10:14 soapStub.h
  7. -rwxr-xr-x 1    477042 2013-12-25 10:31 stdsoap2.c*
  8. -rwxr-xr-x 1     91109 2013-12-25 10:31 stdsoap2.h*
  9. -rw-r--r-- 1      3634 2013-12-25 10:14 wsdd.h
 

这样基本的ONVIF代码框架就已经生成完成了,如果想看一个简单的代码例子的话,可以参考这个例程

onvif开发实战1--总结框架搭建的更多相关文章

  1. onvif开发实战2--总结框架搭建

    完成框架搭建后,编写自己的主函数起onvif服务 编写makefile objs = onvif.o onvif_func.o duration.o soapC.o soapServer.o stds ...

  2. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  3. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  4. iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)

      环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)   研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...

  5. ABP框架个人开发实战(1)_环境搭建

    前言 之前关注ABP框架有一阵子了,一直没有潜下心来实际研究一下.最近想自己建站,以后有自己的功能开发项目,可以在自己的站点上开发,并一步步的完善,所以找个比较好用的框架迫在眉睫,选来选去,决定用AB ...

  6. Spring Boot微服务电商项目开发实战 --- 基础配置及搭建

    根据SpringBoot实现分布式微服务项目近两年的开发经验,今天决定开始做SpringBoot实现分布式微服务项目的系列文章,帮助其他正在使用或计划使用SringBoot开发的小伙伴们.本次系列文章 ...

  7. Cordova+Asp.net Mvc+GIS跨平台移动应用开发实战1-系统初步搭建(附演示,apk,全部源码)

    1.前言 身处在移动互联网的今天,移动应用开发炙手可热,身为程序猿的我们怎么能错过开发一款我们自己的APP.本人算是一个基于.net的GIS开发入门者(马上就大四啦), 暑假在学校参加GIS比赛有大把 ...

  8. Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)

    生命不止,继续 go go go !!! 先插播一条广告,给你坚持学习golang的理由: <2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言> 言归正传! 之前写过使用g ...

  9. [Lua游戏AI开发指南] 笔记零 - 框架搭建

    一.图书详情 <Lua游戏AI开发指南>,原作名: Learning Game AI Programming with Lua. 豆瓣:https://book.douban.com/su ...

随机推荐

  1. leetcode笔记:Range Sum Query - Mutable

    一. 题目描写叙述 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), ...

  2. Codeforces 327A-Flipping Game(暴力枚举)

    A. Flipping Game time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  3. Simditor用法

    一不小心接触到Simditor,瞬间被它优美极简的界面所吸引.Simditor是Tower开源的所见即所得的在线富文本编辑器. Simditor的理念是保持简单,避免过度的功能,每个特性都追求极致的用 ...

  4. DevExpress控件的安装及画图控件的使用

    近期须要绘制纵断面图,而AE自带的又不是非常好,查找资料后使用DevExpress控件中的画图控件实现了纵断面的绘制.Dev控件是须要付费的.这里我们使用破解版的哈. 安装包及破解文件上传至我的网盘了 ...

  5. HDU 5444 Elven Postman 二叉排序树

    HDU 5444 题意:给你一棵树的先序遍历,中序遍历默认是1...n,然后q个查询,问根节点到该点的路径(题意挺难懂,还是我太傻逼) 思路:这他妈又是个大水题,可是我还是太傻逼.1000个点的树,居 ...

  6. OpenGL常见错误之——glut.h文件的函数无法正常连接

    glut.h文件的函数无法正常连接,典型的错误如下:------ 已启动生成: 项目: gears, 配置: Debug Win32 ------1>正在链接...1>GEARS.obj ...

  7. SVN仓库目录结构

    SVN仓库目录结构Repository: trunktagsbranches trunk(主干|主线) branchs(分支) tags(标记) truck(主干|主线|主分支):是用来做主方向开发的 ...

  8. Server.UrlEncode与HttpUtility.UrlEncode的区别

    一.HttpUtility.UrlEncode 方法 1.public static string UrlEncode(byte[]) 将字节数组转换为已编码的 URL 字符串. 2.public s ...

  9. Important Abstractions and Data Structures

    For Developers‎ > ‎Coding Style‎ > ‎ Important Abstractions and Data Structures 目录 1 TaskRunne ...

  10. shell中IF的用法介绍

    一.语法结构 if [ condition ] then      statements  [elif condition      then statements. ..]  [else       ...