Onvif開發之Linux下gsoap的使用及移植
轉自 http://blog.csdn.net/love_xjhu/article/details/9772361
一直以來都是在CSDN上面學習別人的東西,很多次想寫點什麼但是又無從寫起。由於公司專案需要,最近一段時間在研究onvif,在網上找了很多資料,發現資料是非常多,但是很少有比較全的資料,或者資料太多無從下手。我打算從做專案開始,用CSDN部落格記錄我的專案筆記,同時希望能幫助到需要幫助的人,以感謝這麼多年來CSDN上各位高手對我的幫助。onvif的開發從gsoap的移植開始!今天完成了gsoap的移植,生成了程式碼。
一、 開發環境
本人開發環境為:
1. 電腦主頻2.6G,記憶體4G;
2. 虛擬機器:Product: VMware® Workstation; Version: 7.1.3 build-324285
3.
[[email protected] ~]# cat /proc/version
Linux version 2.6.25-14.fc9.i686 ([email protected]) (gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC) ) #1 SMP Thu May 1 06:28:41 EDT 2008
[[email protected] ~]#
4. linux編譯環境:海思交叉編譯器arm-hisiv100nptl-linux-g++
三、操作步驟詳解
1. 下載gsoap
根據以上提供的地址,登陸gsoap官網下載最新的安裝包和相關文件;截止今天(2013年8月5日),官網釋出的最新版本的gsoap工具為2.8.15版本;最新版本的使用,可以參考文件:《gSOAP 2.8.15 User Guide .pdf》,該文件有非常詳細的說明,現在網路上的大部分的demo都是copy這裡的;該文件值得研究;該文件在其官網上可以下載,下載地址為:
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是否已經安裝成功;安裝成功即會顯示該命令:如下所示
[[email protected] ~]# wsdl
wsdl wsdl2 wsdl2h
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# soap
soapcpp2 soapsuds
[[email protected] ~]#
如果不知道被安裝在哪個目錄,可以用命令查詢:
命令:$:find / -name wsdl2h
如下所示:
[[email protected] ~]#
[[email protected] ~]# find / -name wsdl2h
/usr/local/bin/wsdl2h
^C
[[email protected] ~]#
[[email protected] ~]#
即安裝的wsdl2h和soapcpp2存在於系統的/usr/local/bin/目錄
至此,完成了gsoap2.8.15工具的安裝工作;
[[email protected] onvif_new]#
[[email protected] onvif_new]#
[[email protected] 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
[[email protected] onvif_new]#
[[email protected] 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路徑
兩種方式生成的檔案基本相同,只是名字略有區別,大家可以生成對比看看。
如下所示:
[[email protected] onvif_new]#
[[email protected] 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
[[email protected] 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
再執行命令
[[email protected] onvif_new]#
[[email protected] onvif_new]#
[[email protected] 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
[[email protected] onvif_new]#
[[email protected] onvif_new]#
可以看到,這次可以成功執行命令,在當前目錄下可以看到生成的原始檔以及不同功能所對應的名稱空間。然後我們可以在新生成的原始碼上面進行開發。也許有人會覺得程式碼量很大,沒關係,我們後續可以裁剪。另外,為了保證onvif所有的功能都包括在裡面,我們必須在最開始開發的時候就生成包含所有功能的檔案。
後續介紹根據該過程生成的程式碼實現onvif發現功能。
相關推薦
Onvif開發之Linux下gsoap的使用及移植
轉自 http://blog.csdn.net/love_xjhu/article/details/9772361 一直以來都是在CSDN上面學習別人的東西,很多次想寫點什麼但是又無從寫起。由於公司專案需要,最近一段時間在研究onvif,在網上找了很多資料,發現資料是非
ElasticSearch之——linux下安裝及head外掛
轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/79955325系統環境: vm12 下的centos 7.2當前安裝版本: elasticsearch-2.4.0.tar.gz安裝和學習可參照官方文件: 安
Linux下基礎及Python開發工具安裝
Linux下基礎及Python開發工具安裝 第一部分、 1.作業系統簡介 1.windows 圖形化介面 2.Linux 開源,安全,高效, **命令列操作介面 3.unix 與linux是同根同源的, 大型的伺服器,商用,收費的 4.mac os 蘋果的pc作業系
linux下gsoap環境搭建及C++ demo
第一次在Linux下裸寫程式碼,沒有大神可以抱大腿,makefile寫到吐血。 做一個從webservice服務端獲取資料的小東西。以下記錄環境搭建和基礎demo,資料整理彙總,備忘。 基礎概念 WebService:一種跨程式語言和跨作業系統平臺的遠端呼叫技術。
onvif開發之利用gSOAP生成onvif客戶端程式碼框架
cd gsoap-2.8 ./configure make sudo make install 命令列模式下敲入命令:wsdl2h -V 檢視gSOAP軟體版本,有版本出現則安裝成功。 2. 利用gSOAP生成onvif客戶端程式碼框架 2.1 在當前目錄下
Linux運維之linux下的檔案定址及檔案管理
一、Linux的系統結構 1.Linux系統是一個根檔案系統,是一個倒樹型結構(即所有的檔案都來自一個根目錄),最大的目錄名稱叫“/”(根目錄) 2.Linux系統中的二級目錄(根檔案系統下的目錄檔案) (1)/bin 二進位制可執行檔案,系統常規命令 (2
Intellij idea史上最簡單的教程之Linux下安裝與破解Intellij idea2017
成功 zxvf java 新建 pre form 旗艦版 lan intel 一、前言 這一節我們介紹在Linux下如何安裝與破解Intellij idea2017。現在有很多公司開發環境都是Linux,所以掌握在Linux環境下使用Idea辦公也是咱們必須得掌握的技能。
GTK學習筆記之Linux下Gtk環境搭建
linux 配置 evel app C/C++語言 好的 學習 搜索 基本 下面介紹下Ubuntu 環境下具體的安裝過程: 1、配置安裝gcc/g++/gdb/make 等基本編程工具(必須裝好) 剛裝好的Ubuntu系統中已經有GCC了,但是這個GCC幾乎什麽文件都不能編
linux下安裝及配置jenkins(war包)
eight 成功 .html 輸入 需要 目錄 bubuko grep test 1、由於Jenkins是基於Java開發的,安裝前確認操作系統已經安裝了jdk和tomcat 如何安裝,請參考WINDOWS/LINUX上部署TOMCAT服務器 2、下載war包: htt
Python之Linux下的 virtualenv Mac下Python和Pycharm之virtualenv
Mac下Python和Pycharm之virtualenv 一、python如何配置virtualenv 1.安裝virtualenv pip3 install virtualenvpip install -i https://
JavaWeb開發之詳解Servlet及Servlet容器
由於 servlet開發 遊戲 metadata 移動互 -o 每一個 web開發 port 自JavaEE誕生伊始,Servlet容器和Servlet技術,就構成了JavaEE應用的核心,配合其它組件,它們完善了Java企業級開發的全套解決方案。小到一個靜態博客網站,大到
Go安裝之linux下如何配置Go語言環境變數?
文章目錄 1. 登入root 使用者,修改配置 2. 修改內容 3. 生效配置,並測試是否可用 1. 登入root 使用者,修改配置 切換到root使用者模式 $ sudo -i password: 開啟/etc/p
Python之Linux下的virtualenv&&virtualenvwrapper
virtualenv 可以在系統中建立多個不同並且相互不干擾的虛擬環境。 #指定清華源下載pip的包 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv #升級pip工具 pip3 install --
Linux下查詢及修改PHP配置檔案ini的路徑[轉載]
##原本地址:http://www.findme.wang/blog/detail/id/278.html 一、查詢PHP配置檔案 說到查詢,當然首先想到的是find命令。執行如下命令,即可查詢到php.ini檔案 find / -name php.ini 可是,找到三個
iOS開發之日期格式轉換及時間間隔判斷
0. 說明 支援時間戳與日期、日期和字串的相互轉換; 支援日期轉星期; 支援以下時間段判斷:一分鐘內、一小時內、昨天、今天、明天、今年; 1. 具體程式碼 // // NSDateExt.h // SwiftExercises // //
Python開發環境---Linux下
一、pyenv pyenv是一個Python版本管理工具,它能夠進行全域性的Python版本切換,也可以為單個專案提供對應的Python版本。使用pyenv以後,可以在伺服器上安裝多個不同的Python版本,也可以安裝不同的Python實現。不同Python版本之間的切換也非常簡單。py
Linux下mplayer的移植
實驗準備:libmad-0.15.1b.tar.gz,MPlayer-1.0rc4.tar 下載地址如下:https://pan.baidu.com/s/1RSc-NcsgvYQymbCj5oNd_w MP3的移植過程: 一.將開發板與宿主機連線 1.usb轉串列埠驅動下載。將usb
loadrunner監控linux之linux下安裝rpc
安裝和配置rpc服務 說明:rpc服務需rsh的支援,一般情況下rsh已安裝。通過rpm -qa rsh命令檢視。 下載rpc.rstatd-4.0.1.tar.gz,可先下載到window下,通過ftp傳到linux。下載地址:https://sourceforge.net/projects/rstat
雲伺服器——之Linux下安裝tomcat
在上一篇文章中已經準備好了tomcat安裝的基本環境jdk的安裝,那麼我們現在來記錄tomcat的安裝。 第一步:下載tomcat安裝包 http://tomcat.apache.org/ 第二步:通過ftp檔案工具上傳到伺服器或者本地的虛擬機器 第三步:開始安
iOS開發之ReactiveCocoa下的MVVM
最近工作比較忙,但還是出來更新部落格了,今天給大家分享一些ReactiveCocoa以及MVVM的一些東西,幹活還是比較足的。在之前發表過一篇博文,名字叫做,大體上講的就是使用Block回撥的方式實現MVVM的。在寫上篇文章時也知道有ReactiveCocoa這個函式響應式程式設計的框架,並且有許多人用它來更