昨天在ubuntu下進行安裝gSOAP,費了不少時間,沒成功,今天又來找了大量教程資料,終於一次成功,這裏寫下本身的安裝步驟和方法,供你們參考。
首先下載gsoap,我下載的是gsoap-2.8.1.ziphtml
用unzip gsoap-2.8.1.zip命令解壓縮,會解壓生成gsoap-2.8文件夾。linux
cd gsoap-2.8macos
在安裝以前須要先安裝一些編譯工具。ubuntu
安裝編譯工具:網絡
$sudo apt-get install build-essentialapp
爲了成功編譯gSOAP,您須要安裝GTK+的開發文件和GLib庫(libraries)。ide
$sudo apt-get install libgtk2.0-dev libglib2.0-dev工具
安裝Checkinstall以便管理您系統中直接由源代碼編譯安裝的軟件。學習
$sudo apt-get install checkinstallflex
安裝YACC,YACC是Unix/Linux上一個用來生成編譯器的編譯器(編譯器代碼生成器)。
$sudo apt-get install flex bison
安裝OpenSSL
$sudo apt-get install openssl
安裝OpenSSL一般的庫文件,首先使用如下命令來肯定在Ubuntu系統中可得到的庫文件的應用版本:
$sudo apt-cache search libssl | grep SSL
$sudo apt-get install libssl-dev
簡單安裝:(安裝到/usr/local/gSOAP目錄下)
configure --prefix=/usr/local/gSOAP
make
make install
安裝完成。
爲了後面的C和C++版本的服務和客戶端的開發可以脫離源代碼目錄,最好還要以下處理:
(1)將源代碼目錄下gsoap子目錄中的import目錄拷貝到gSOAP目錄下來;
(2)gSOAP目錄下建一個env目錄,將gsoap/samples/link下的全部文件拷貝過來,而且生成envC.o(C版本要用到),方法是:
/usr/local/gSOAP/bin/soapcpp2 -penv -c env.h
g++ -c -I /usr/local/gSOAP/include envC.c
(3)gSOAP目錄下建一個src目錄,將將源代碼目錄下gsoap子目錄中的stdsoap*.*拷貝過來。
安裝完成。
安裝uuid
1 apt-get install uuid uuid-dev
一直以來都是在CSDN上面學習別人的東西,不少次想寫點什麼可是又無從寫起。因爲公司項目須要,最近一段時間在研究onvif,在網上找了不少資料,發現資料是很是多,可是不多有比較全的資料,或者資料太多無從下手。我打算從作項目開始,用CSDN博客記錄個人項目筆記,同時但願能幫助到須要幫助的人,以感謝這麼多年來CSDN上各位高手對個人幫助。onvif的開發從gsoap的移植開始!今天完成了gsoap的移植,生成了代碼。
1、 開發環境
本人開發環境爲:
1. 電腦主頻2.6G,內存4G;
2. 虛擬機:Product: VMware® Workstation; Version: 7.1.3 build-324285
3. linux操做系統版本:
[root@localhost ~]# cat /proc/version
Linux version 2.6.25-14.fc9.i686 (mockbuild@) (gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC) ) #1 SMP Thu May 1 06:28:41 EDT 2008
[root@localhost ~]#
4. linux編譯環境:海思交叉編譯器arm-hisiv100nptl-linux-g++
2、必備網址
1. Onvif官網:http://www.onvif.org/
2. gsoap官網:http://www.cs.fsu.edu/~engelen/soap.html
3、操做步驟詳解
1. 下載gsoap
根據以上提供的地址,登錄gsoap官網下載最新的安裝包和相關文檔;截止今天(2013年8月5日),官網發佈的最新版本的gsoap工具爲2.8.15版本;最新版本的使用,能夠參考文檔:《gSOAP 2.8.15 User Guide .pdf》,該文檔有很是詳細的說明,如今網絡上的大部分的demo都是copy這裏的;該文檔值得研究;該文檔在其官網上能夠下載,下載地址爲:http://www.cs.fsu.edu/~engelen/soap.html;也能夠在官網在線查看;或者,能夠在gsoap安裝包裏面找到該文檔,路徑爲:gsoap_2.8.15/gsoap-2.8/gsoap/doc, 名字爲soapdoc2.pdf的文件。
2. 安裝
將下載的安裝包解壓,並拷貝到linux的操做目錄,本人操做目錄爲:
$: /home/samba/onvif-2013.08.05/
以上面的目錄爲例:(注意如下操做均在root用戶權限下進行)
首先進入目錄cd /home/samba/onvif-2013.08.05/ gsoap_2.8.15/gsoap-2.8/
而後,配置編譯環境:
命令:$:./configure
而後,編譯鏈接
命令:$:make
最後,安裝gSOAP
命令:$:make install
以上命令執行完成以後可用wsdl2h或者soapcpp2查看gSOAP是否已經安裝成功;安裝成功即會顯示該命令:以下所示
[root@localhost ~]# wsdl
wsdl wsdl2 wsdl2h
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# soap
soapcpp2 soapsuds
[root@localhost ~]#
若是不知道被安裝在哪一個目錄,能夠用命令查詢:
命令:$:find / -name wsdl2h
以下所示:
[root@localhost ~]#
[root@localhost ~]# find / -name wsdl2h
/usr/local/bin/wsdl2h
^C
[root@localhost ~]#
[root@localhost ~]#
即安裝的wsdl2h和soapcpp2存在於系統的/usr/local/bin/目錄
至此,完成了gsoap2.8.15工具的安裝工做;
3. 頭文件生成
以上兩個命令中,命令wsdl2h用於生成頭文件,命令soapcpp2用於生成源文件;這兩個命令在/gsoap_2.8.15/gsoap-2.8/gsoap/bin中能夠找到。bin目錄下面包含三個目錄,分別表示win32系統,linux系統以及macosx系統下的命令。可是bin目錄下面的是源碼包裏面自帶的,咱們在本身系統裏開發的話最好根據本身的編譯器去編譯生成新的命令。編譯生成的新的命令能夠在gsoap目錄下看到。
工具安裝完成以後能夠在linux下從新創建一個本身的目錄,用來生成代碼:
這裏創建目錄:onvif_new
完整路徑爲:/home/samba/onvif-2013.08.05/ onvif_new/
將gsoap 目錄下的typemap.dat文件拷貝到目錄onvif_new
(1)在線生成頭文件:
在onvif_new目錄下執行命令:
~onvif_new$: 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
每一個網址之間用空格分開,執行完命令便可生成頭文件onvif.h。
以上地址來自onvif官網,能夠本身登陸官網查看。
注意,這種方式的話必定要保證您的虛擬機能出外網,簡單說就是在虛擬機下能ping通百度或者其餘外網地址;並且要保證網絡比較快,不然在生成過程當中會出現下載文件超時而致使生成頭文件失敗。該方式生成的話,全部文件均是在線實時下載。
(2)離線生成頭文件
若是當前電腦沒法聯網,則能夠經過離線的方式來生成,命令爲:
~onvif_new$: wsdl2h -o onvif.h -c -s -t ./typemap.dat devicemgmt.wsdl media.wsdl event.wsdl display.wsdl
deviceio.wsdl imaging.wsdl ptz.wsdl receiver.wsdl recording.wsdl search.wsdl remotediscovery.wsdl
replay.wsdl analytics.wsdl analyticsdevice.wsdl actionengine.wsdl accesscontrol.wsdl doorcontrol.wsdl
注意不一樣的wsdl以空格分開。
目前Onvif官網提供的最新的WSDL文件一共有17個,能夠將其下載下來。不過這些文件直接都是相互關聯的,下載的話,除了這17個文件以外,還要下載全部相關聯的文件。另外,下載以後,還須要更改文件中的路徑,將wsdl文件中的schemaLocation以及location所指的路徑進行修改,修改成本地的地址。將全部須要下載的文件下載到onvif_new目錄,並修改相關地址。固然若是網速夠快,提倡直接在線生成頭文件和源文件。另外爲了不後續開發過程當中出現某些功能的缺省,最好一次性生成包含全部功能的代碼。
(3)離線生成頭文件過程:
離線生成頭文件過程以下所示:
[root@localhost onvif_new]#
[root@localhost onvif_new]#
[root@localhost onvif_new]#
** The gSOAP WSDL/Schema processor for C and C++, wsdl2h release 2.8.15
** Copyright (C) 2000-2013 Robert van Engelen, Genivia Inc.
** All Rights Reserved. This product is provided "as is", without any warranty.
** The wsdl2h tool is released under one of the following two licenses:
** GPL or the commercial license by Genivia Inc. Use option -l for details.
Saving onvif.h
Reading type definitions from type map file './typemap.dat'
Reading file 'devicemgmt.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'devicemgmt.wsdl'
Reading file 'media.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'media.wsdl'
Reading file 'event.wsdl'...
Reading file 'bw-2.wsdl'...
Reading file 'rw-2.wsdl'...
Reading schema file 'r-2.xsd'...
Done reading 'r-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Done reading 'rw-2.wsdl'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'bw-2.wsdl'
Done reading 'event.wsdl'
Reading file 'display.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'display.wsdl'
Reading file 'deviceio.wsdl'...
Done reading 'deviceio.wsdl'
Reading file 'imaging.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'imaging.wsdl'
Reading file 'ptz.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'ptz.wsdl'
Reading file 'receiver.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'receiver.wsdl'
Reading file 'recording.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'recording.wsdl'
Reading file 'search.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'search.wsdl'
Reading file 'remotediscovery.wsdl'...
Done reading 'remotediscovery.wsdl'
Reading file 'replay.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'replay.wsdl'
Reading file 'analytics.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'analytics.wsdl'
Reading file 'analyticsdevice.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'analyticsdevice.wsdl'
Reading file 'actionengine.wsdl'...
Reading schema file 'onvif.xsd'...
Done reading 'onvif.xsd'
Reading schema file 'b-2.xsd'...
Done reading 'b-2.xsd'
Reading schema file 'bf-2.xsd'...
Done reading 'bf-2.xsd'
Reading schema file 't-1.xsd'...
Warning: unexpected element 'xsd:unique' at level 2 is skipped (safe to ignore)
Warning: unexpected element 'xsd:unique' at level 6 is skipped (safe to ignore)
Done reading 't-1.xsd'
Done reading 'actionengine.wsdl'
Reading file 'accesscontrol.wsdl'...
Reading schema file 'types.xsd'...
Done reading 'types.xsd'
Done reading 'accesscontrol.wsdl'
Reading file 'doorcontrol.wsdl'...
Reading schema file 'types.xsd'...
Done reading 'types.xsd'
Done reading 'doorcontrol.wsdl'
Warning: 8 service bindings found, but collected as one service (use option -Nname to produce a separate service for each binding)
Warning: 2 service bindings found, but collected as one service (use option -Nname to produce a separate service for each binding)
Warning: 2 service bindings found, but collected as one service (use option -Nname to produce a separate service for each binding)
Warning: WSDL "WS-BaseNotification" has no bindings to implement operations
To complete the process, compile with:
> soapcpp2 onvif.h
[root@localhost onvif_new]#
[root@localhost onvif_new]#
命令執行完成以後能夠在當前目錄下看到onvif.h。
4. 源文件的生成
生成onvif.h頭文件以後,便可根據soapcpp2命令生成C源文件或者CPP源文件。
命令爲:
onvif_new $: soapcpp2 -c onvif.h -x -I import路徑 -I gsoap路徑
若是要生成cpp文件,則爲:
onvif_new $: soapcpp2 -cpp onvif.h -x -I import路徑 -I gsoap路徑
兩種方式生成的文件基本相同,只是名字略有區別,你們能夠生成對比看看。
以下所示:
[root@localhost onvif_new]#
[root@localhost onvif_new]# soapcpp2 -c onvif.h -x -I /home/samba/onvif-2013.08.05/gsoap_2.8.15/
gsoap-2.8/gsoap/import -I /home/samba/onvif-2013.08.05/gsoap_2.8.15/gsoap-2.8/gsoap/
** The gSOAP code generator for C and C++, soapcpp2 release 2.8.15
** Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc.
** All Rights Reserved. This product is provided "as is", without any warranty.
** The soapcpp2 tool is released under one of the following two licenses:
** GPL or the commercial license by Genivia Inc.
Saving soapStub.h annotated copy of the source input
Saving soapH.h interface declarations
Using wsdd service name: wsdd
Using wsdd service style: document
Using wsdd service encoding: literal
Using wsdd service location: http://localhost:80
Using wsdd schema import: http://schemas.xmlsoap.org/ws/2005/04/discovery
Saving wsdd.nsmap namespace mapping table
Using ns1 service name: ActionEngineBinding
Using ns1 service style: document
Using ns1 service encoding: literal
Using ns1 service location: http://localhost:80
Using ns1 schema namespace: http://www.onvif.org/ver10/actionengine/wsdl
Saving ActionEngineBinding.nsmap namespace mapping table
Using ns2 service name: PACSBinding
Using ns2 service style: document
Using ns2 service encoding: literal
Using ns2 service location: http://localhost:80
Using ns2 schema namespace: http://www.onvif.org/ver10/accesscontrol/wsdl
Saving PACSBinding.nsmap namespace mapping table
Using ns4 service name: DoorControlBinding
Using ns4 service style: document
Using ns4 service encoding: literal
Using ns4 service location: http://localhost:80
Using ns4 schema namespace: http://www.onvif.org/ver10/doorcontrol/wsdl
Saving DoorControlBinding.nsmap namespace mapping table
Using tad service name: AnalyticsDeviceBinding
Using tad service style: document
Using tad service encoding: literal
Using tad service location: http://localhost:80
Using tad schema namespace: http://www.onvif.org/ver10/analyticsdevice/wsdl
Saving AnalyticsDeviceBinding.nsmap namespace mapping table
Using tan service name: RuleEngineBinding
Using tan service style: document
Using tan service encoding: literal
Using tan service location: http://localhost:80
Using tan schema namespace: http://www.onvif.org/ver20/analytics/wsdl
Saving RuleEngineBinding.nsmap namespace mapping table
Using tdn service name: RemoteDiscoveryBinding
Using tdn service style: document
Using tdn service encoding: literal
Using tdn service location: http://localhost:80
Using tdn schema namespace: http://www.onvif.org/ver10/network/wsdl
Saving RemoteDiscoveryBinding.nsmap namespace mapping table
Using tds service name: DeviceBinding
Using tds service style: document
Using tds service encoding: literal
Using tds service location: http://localhost:80
Using tds schema namespace: http://www.onvif.org/ver10/device/wsdl
Saving DeviceBinding.nsmap namespace mapping table
Using tev service name: PullPointSubscriptionBinding
Using tev service style: document
Using tev service encoding: literal
Using tev service location: http://localhost:80
Using tev schema namespace: http://www.onvif.org/ver10/events/wsdl
Saving PullPointSubscriptionBinding.nsmap namespace mapping table
Using timg service name: ImagingBinding
Using timg service style: document
Using timg service encoding: literal
Using timg service location: http://localhost:80
Using timg schema namespace: http://www.onvif.org/ver20/imaging/wsdl
Saving ImagingBinding.nsmap namespace mapping table
Using tls service name: DisplayBinding
Using tls service style: document
Using tls service encoding: literal
Using tls service location: http://localhost:80
Using tls schema namespace: http://www.onvif.org/ver10/display/wsdl
Saving DisplayBinding.nsmap namespace mapping table
Using tmd service name: DeviceIOBinding
Using tmd service style: document
Using tmd service encoding: literal
Using tmd service location: http://localhost:80
Using tmd schema namespace: http://www.onvif.org/ver10/deviceIO/wsdl
Saving DeviceIOBinding.nsmap namespace mapping table
Using tptz service name: PTZBinding
Using tptz service style: document
Using tptz service encoding: literal
Using tptz service location: http://localhost:80
Using tptz schema namespace: http://www.onvif.org/ver20/ptz/wsdl
Saving PTZBinding.nsmap namespace mapping table
Using trc service name: RecordingBinding
Using trc service style: document
Using trc service encoding: literal
Using trc service location: http://localhost:80
Using trc schema namespace: http://www.onvif.org/ver10/recording/wsdl
Saving RecordingBinding.nsmap namespace mapping table
Using trp service name: ReplayBinding
Using trp service style: document
Using trp service encoding: literal
Using trp service location: http://localhost:80
Using trp schema namespace: http://www.onvif.org/ver10/replay/wsdl
Saving ReplayBinding.nsmap namespace mapping table
Using trt service name: MediaBinding
Using trt service style: document
Using trt service encoding: literal
Using trt service location: http://localhost:80
Using trt schema namespace: http://www.onvif.org/ver10/media/wsdl
Saving MediaBinding.nsmap namespace mapping table
Using trv service name: ReceiverBinding
Using trv service style: document
Using trv service encoding: literal
Using trv service location: http://localhost:80
Using trv schema namespace: http://www.onvif.org/ver10/receiver/wsdl
Saving ReceiverBinding.nsmap namespace mapping table
Using tse service name: SearchBinding
Using tse service style: document
Using tse service encoding: literal
Using tse service location: http://localhost:80
Using tse schema namespace: http://www.onvif.org/ver10/search/wsdl
Saving SearchBinding.nsmap namespace mapping table
Saving soapClient.c client calling stubs
Saving soapClientLib.c client stubs with serializers (use only for libs)
Saving soapServer.c server request dispatcher
Saving soapServerLib.c server request dispatcher with serializers (use only for libs)
Saving soapC.c serializers
There were errors:
1 semantic error
[root@localhost onvif_new]#
咱們發現,生成過程當中有錯誤:
wsa5.h(288): **ERROR**: remote method name clash: struct/class 'SOAP_ENV__Fault' already declared at line 274
能夠發現這是因爲重複定義致使,能夠修改該文件。
打開文件gsoap_2.8.15/gsoap-2.8/gsoap/import/ wsa5.h
將277行int SOAP_ENV__Fault修改成int SOAP_ENV__Fault_alex
再執行命令
[root@localhost onvif_new]#
[root@localhost onvif_new]#
[root@localhost onvif_new]# soapcpp2 -c onvif.h -x -I /home/samba/onvif-2013.08.05/gsoap_2.8.15/
gsoap-2.8/gsoap/import -I /home/samba/onvif-2013.08.05/gsoap_2.8.15/gsoap-2.8/gsoap/
** The gSOAP code generator for C and C++, soapcpp2 release 2.8.15
** Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc.
** All Rights Reserved. This product is provided "as is", without any warranty.
** The soapcpp2 tool is released under one of the following two licenses:
** GPL or the commercial license by Genivia Inc.
Saving soapStub.h annotated copy of the source input
Saving soapH.h interface declarations
Using wsdd service name: wsdd
Using wsdd service style: document
Using wsdd service encoding: literal
Using wsdd service location: http://localhost:80
Using wsdd schema import: http://schemas.xmlsoap.org/ws/2005/04/discovery
Saving wsdd.nsmap namespace mapping table
Using ns1 service name: ActionEngineBinding
Using ns1 service style: document
Using ns1 service encoding: literal
Using ns1 service location: http://localhost:80
Using ns1 schema namespace: http://www.onvif.org/ver10/actionengine/wsdl
Saving ActionEngineBinding.nsmap namespace mapping table
Using ns2 service name: PACSBinding
Using ns2 service style: document
Using ns2 service encoding: literal
Using ns2 service location: http://localhost:80
Using ns2 schema namespace: http://www.onvif.org/ver10/accesscontrol/wsdl
Saving PACSBinding.nsmap namespace mapping table
Using ns4 service name: DoorControlBinding
Using ns4 service style: document
Using ns4 service encoding: literal
Using ns4 service location: http://localhost:80
Using ns4 schema namespace: http://www.onvif.org/ver10/doorcontrol/wsdl
Saving DoorControlBinding.nsmap namespace mapping table
Using tad service name: AnalyticsDeviceBinding
Using tad service style: document
Using tad service encoding: literal
Using tad service location: http://localhost:80
Using tad schema namespace: http://www.onvif.org/ver10/analyticsdevice/wsdl
Saving AnalyticsDeviceBinding.nsmap namespace mapping table
Using tan service name: RuleEngineBinding
Using tan service style: document
Using tan service encoding: literal
Using tan service location: http://localhost:80
Using tan schema namespace: http://www.onvif.org/ver20/analytics/wsdl
Saving RuleEngineBinding.nsmap namespace mapping table
Using tdn service name: RemoteDiscoveryBinding
Using tdn service style: document
Using tdn service encoding: literal
Using tdn service location: http://localhost:80
Using tdn schema namespace: http://www.onvif.org/ver10/network/wsdl
Saving RemoteDiscoveryBinding.nsmap namespace mapping table
Using tds service name: DeviceBinding
Using tds service style: document
Using tds service encoding: literal
Using tds service location: http://localhost:80
Using tds schema namespace: http://www.onvif.org/ver10/device/wsdl
Saving DeviceBinding.nsmap namespace mapping table
Using tev service name: PullPointSubscriptionBinding
Using tev service style: document
Using tev service encoding: literal
Using tev service location: http://localhost:80
Using tev schema namespace: http://www.onvif.org/ver10/events/wsdl
Saving PullPointSubscriptionBinding.nsmap namespace mapping table
Using timg service name: ImagingBinding
Using timg service style: document
Using timg service encoding: literal
Using timg service location: http://localhost:80
Using timg schema namespace: http://www.onvif.org/ver20/imaging/wsdl
Saving ImagingBinding.nsmap namespace mapping table
Using tls service name: DisplayBinding
Using tls service style: document
Using tls service encoding: literal
Using tls service location: http://localhost:80
Using tls schema namespace: http://www.onvif.org/ver10/display/wsdl
Saving DisplayBinding.nsmap namespace mapping table
Using tmd service name: DeviceIOBinding
Using tmd service style: document
Using tmd service encoding: literal
Using tmd service location: http://localhost:80
Using tmd schema namespace: http://www.onvif.org/ver10/deviceIO/wsdl
Saving DeviceIOBinding.nsmap namespace mapping table
Using tptz service name: PTZBinding
Using tptz service style: document
Using tptz service encoding: literal
Using tptz service location: http://localhost:80
Using tptz schema namespace: http://www.onvif.org/ver20/ptz/wsdl
Saving PTZBinding.nsmap namespace mapping table
Using trc service name: RecordingBinding
Using trc service style: document
Using trc service encoding: literal
Using trc service location: http://localhost:80
Using trc schema namespace: http://www.onvif.org/ver10/recording/wsdl
Saving RecordingBinding.nsmap namespace mapping table
Using trp service name: ReplayBinding
Using trp service style: document
Using trp service encoding: literal
Using trp service location: http://localhost:80
Using trp schema namespace: http://www.onvif.org/ver10/replay/wsdl
Saving ReplayBinding.nsmap namespace mapping table
Using trt service name: MediaBinding
Using trt service style: document
Using trt service encoding: literal
Using trt service location: http://localhost:80
Using trt schema namespace: http://www.onvif.org/ver10/media/wsdl
Saving MediaBinding.nsmap namespace mapping table
Using trv service name: ReceiverBinding
Using trv service style: document
Using trv service encoding: literal
Using trv service location: http://localhost:80
Using trv schema namespace: http://www.onvif.org/ver10/receiver/wsdl
Saving ReceiverBinding.nsmap namespace mapping table
Using tse service name: SearchBinding
Using tse service style: document
Using tse service encoding: literal
Using tse service location: http://localhost:80
Using tse schema namespace: http://www.onvif.org/ver10/search/wsdl
Saving SearchBinding.nsmap namespace mapping table
Saving soapClient.c client calling stubs
Saving soapClientLib.c client stubs with serializers (use only for libs)
Saving soapServer.c server request dispatcher
Saving soapServerLib.c server request dispatcher with serializers (use only for libs)
Saving soapC.c serializers
Compilation successful
[root@localhost onvif_new]#
[root@localhost onvif_new]#
能夠看到,此次能夠成功執行命令,在當前目錄下能夠看到生成的源文件以及不一樣功能所對應的命名空間。而後咱們能夠在新生成的源碼上面進行開發。也許有人會以爲代碼量很大,不要緊,咱們後續能夠裁剪。另外,爲了保證onvif全部的功能都包括在裏面,咱們必須在最開始開發的時候就生成包含全部功能的文件。
以上過程的wsdl文件能夠在http://download.csdn.net/detail/u011597695/5875143下載。
後續介紹根據該過程生成的代碼實現onvif發現功能。