從gsoap官網(http://www.genivia.com/products.html#notice)下載最新版gsoap(博主用的是gsoap_2.8.45)。gsoap有三個版本:Open Source gSOAP、Commercial gSOAP Edition、Commercial gSOAP Edition。咱們下載開源版本便可。html
新建一個文件夾,命名爲OnvifFramework,將下載下來的gsoap_x.x.xx.zip解壓到該文件夾。在該文件夾下再新建兩個文件夾,分別命名爲:level1和ver10。在level1文件夾下新建一個文件夾,命名爲:level2。在level2文件夾下新建三個文件夾,分別命名爲:FrameworkSource、GenerateSource、ver10。在ver10文件夾下創建三個文件夾,分別命名爲:device、media、schema。在device和media文件夾下新建一個文件夾,命名爲wsdl。在ver10文件夾下新建一個文件夾,命名爲schema。文件夾請務必按這個順序創建。最後將OnvifFramework\gsoap-2.8\gsoap路徑下的typemap.dat和OnvifFramework\gsoap-2.8\gsoap\bin\win32路徑下的wsdl2h.exe、soapcpp2.exe(wsdl2h不支持https,須要從新編譯gsoap,編譯方法參照最下面的博客連接)拷貝到GenerateSource文件夾下。服務器
具體文件夾層次結構以下圖所示:框架
從Onvif官網(http://www.onvif.org/Documents/Specifications.aspx)的ONVIF WSDL 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路徑下。.net
生成方式分爲在線生成和本地生成兩種,鑑於在線生成的不穩定性,博主採用本地生成方式。打開控制檯,切換到GenerateSource路徑下,在控制檯中輸入wsdl2h -o onvif.h -t ./typemap.dat accesscontrol.wsdl accessrules.wsdl actionengine.wsdl advancedsecurity.wsdl analytics.wsdl analyticsdevice.wsdl ssr
credential.wsdl deviceio.wsdl devicemgmt.wsdl display.wsdl doorcontrol.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl schedule.wsdl search.wsdlhtm
(各個wsdl間用一個空格隔開)blog
若是須要鑑權,修改onvif.h頭文件,加入#import "wsse.h"。將 OnvifFramework\gsoap-2.8\gsoap\import路徑下的wsa5.h中的SOAP_ENV__Fault結構體註釋掉或改成其餘名字,如SOAP_ENV__Fault_alex。修改完後在控制檯中輸入soapcpp2 -j onvif.h -I ../../../gsoap-2.8/gsoap/import:../../../gsoap-2.8/gsoap,看到Compilation successful即爲成功。ip
將生成的.h和.cpp文件以及wsdd.nsmap文件拷貝到FrameworkSource中,並拷貝OnvifFramework\gsoap-2.8\gsoap路徑下的stdsoap2.h和stdsoap2.cpp到該文件夾。ci
經過以上六個步驟便可完成ONVIF開發框架搭建,之後開發Onvif應用時,直接拷貝FrameworkSource文件夾中的文件便可(開發Onvif客戶端程序,使用XXXXProxy.h和XXXXProxy.cpp,開發Onvif服務器端程序,使用XXXXService.h和XXXXService.cpp)。Onvif框架文件已上傳,請到此處(http://download.csdn.net/download/u011110151/9898860)下載。開發
這篇博客(http://blog.csdn.net/saloon_yuan/article/details/24901597)及這篇博客(http://blog.csdn.net/benkaoya/article/details/72466827)給予博主很大幫助,特此感謝。