ONVIF学习-ONVIF开发框架搭建(C++)
2016-04-10 21:15
253 查看
第一步、下载gsoap
从gsoap官网(http://www.genivia.com/products.html#notice)下载最新版gsoap(博主用的是gsoap_2.8.29)。gsoap有三个版本:OpenSource gSOAP、Commercial gSOAP Edition、Commercial gSOAP Edition。我们下载开源版本即可。
第二步、解压gsoap并建立文件夹层次
新建一个文件夹,命名为OnvifFramework,将下载下来的gsoap_x.x.xx.zip解压到该文件夹。在该文件夹下再新建两个文件夹,分别命名为:level1和ver10。在level1文件夹下新建一个文件夹,命名为:level2。在level2文件夹下新建三个文件夹,分别命名为:FrameworkSource、GenerateSource、ver10。在ver10文件夹下建立三个文件夹,分别命名为:device、media、schema。在device和schema文件夹下新建一个文件夹,命名为wsdl。在ver10文件夹下新建一个文件夹,命名为schema。文件夹请务必按这个顺序建立。最后将OnvifFramework\gsoap-2.8\gsoap路径下的typemap.dat和OnvifFramework\gsoap-2.8\gsoap\bin\win32路径下的wsdl2h.exe、soapcpp2.exe拷贝到GenerateSource文件夹下。具体文件夹层次结构如下图所示:
第三步、下载Onvif相关文件
从Onvif官网(http://www.onvif.org/Documents/Specifications.aspx)的ONVIFWSDL and XML Schemas Specifications页面中下载wsdl(右键-将链接另存为即可),并将下载下来的wsdl放在GenerateSource文件夹内。拷贝devicemgmt.wsdl到D:\ONVIF\OnvifFramework\level1\level2\ver10\device\wsdl路径下,拷贝media.wsdl到OnvifFramework\level1\level2\ver10\media\wsdl路径下,拷贝onvif.xsd到OnvifFramework\level1\level2\ver10\schema路径下,拷贝onvif.xsd到OnvifFramework\ver10\schema路径下。
第四步、生成onvif.h
生成方式分为在线生成和本地生成两种,鉴于在线生成的不稳定性,博主采用本地生成方式。打开控制台,切换到GenerateSource路径下,在控制台中输入 wsdl2h -o onvif.h -s -t ./typemap.dat accesscontrol.wsdl accessrules.wsdl actionengine.wsdl advancedsecurity.wsdl analytics.wsdl analyticsdevice.wsdl credential.wsdl deviceio.wsdl devicemgmt.wsdl display.wsdl doorcontrol.wsdl event.wsdl imaging.wsdlmedia.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl schedule.wsdl search.wsdl (各个wsdl间用一个空格隔开)
第五步、通过onvif.h文件生成源代码框架
修改xsd和wsdl中的schemaLocation为本地路径(仅部分wsdl需要修改),将 OnvifFramework\gsoap-2.8\gsoap\import路径下的wsa5.h中的SOAP_ENV__Fault结构体注释掉或改为其他名字,如SOAP_ENV__Fault_ex。修改完后在控制台中输入 soapcpp2 -j onvif.h -I ..\..\..\gsoap-2.8\gsoap\import -I ..\..\..\gsoap_2.8\gsoap,看到Compilation successful即为成功。
第六步、整理源代码
将生成的.h和.cpp文件以及wsdd.nsmap文件拷贝到FrameworkSource中,并拷贝OnvifFramework\gsoap-2.8\gsoap路径下的stdsoap2.h和stdsoap2.cpp到该文件夹。总结
通过以上六个步骤即可完成ONVIF开发框架搭建,以后开发Onvif应用时,直接拷贝FrameworkSource文件夹中的文件即可(开发Onvif客户端程序,使用soapwsddProxy.h和soapwsddProxy.cpp,开发Onvif服务器端程序,使用soapwsddService.h和soapwsddService.cpp)。Onvif框架文件已上传,请到此处(http://download.csdn.net/detail/u011110151/9486870)下载。这篇博客(/article/8150810.html)给予博主很大帮助,特此感谢。
相关文章推荐
- 【C语言】链表 题
- 2016华为机试题之 找第一个“1”
- 《c++ primer》第六章 函数
- vc++编译错误列表
- C++深拷贝与浅拷贝的区别
- VC++套接字、数据库、文件读写综合应用-客户端读取文件套接字接收服务端写入数据库
- C语言str函数系列
- C++中的智能指针
- C++中assert的作用
- c++语法笔记
- Calling C and C++ from IDL (二)——变量传递
- C/C++中volatile关键字
- C++ 语法实验室之const_cast,static_cast,dynamic_cast
- 大型分布式C++框架《二:大包处理过程》
- c++第三次实验—类和对象2
- 二叉查找树 C++实现
- C++游戏系列3:用多文件组织角色类
- 枚举小结
- 1026_5位以内的对称素数
- [LeetCode]33. Search in Rotated Sorted Array