gsoap+onvif編譯

/*********************************************gsoap onvif 客戶端功能開發(fā)****************************************************************************************/

1.編譯ssl ,其中安裝目錄會被gsoap編譯時用到
見17行

2.gsoap
unzip gsoap_2.8.34.zip
./configure --with-openssl=/home/llf/x86/openssl-install  (此為openssl安裝目錄) 如果為arm,還需要--host=
make
sudo make install

3. gsoap/import/wsa5.h 注銷277行 int SOAP_ENV__Fault 定義

4.修改gsoap/typemap.dat
Use gSOAP 2.8.10 or greater. In the typemap.dat file that is used by wsdl2h, add the following if not already there:

#   ONVIF recommended prefixes
tds = "http://www.onvif.org/ver10/device/wsdl"
tev = "http://www.onvif.org/ver10/events/wsdl"
tls = "http://www.onvif.org/ver10/display/wsdl"
tmd = "http://www.onvif.org/ver10/deviceIO/wsdl"
timg        = "http://www.onvif.org/ver20/imaging/wsdl"
trt = "http://www.onvif.org/ver10/media/wsdl"
tptz        = "http://www.onvif.org/ver20/ptz/wsdl"
trv = "http://www.onvif.org/ver10/receiver/wsdl"
trc = "http://www.onvif.org/ver10/recording/wsdl"
tse = "http://www.onvif.org/ver10/search/wsdl"
trp = "http://www.onvif.org/ver10/replay/wsdl"
tan = "http://www.onvif.org/ver20/analytics/wsdl"
tad = "http://www.onvif.org/ver10/analyticsdevice/wsdl"
tdn = "http://www.onvif.org/ver10/network/wsdl"
tt  = "http://www.onvif.org/ver10/schema"
#   OASIS recommended prefixes
wsnt        = "http://docs.oasis-open.org/wsn/b-2"
wsntw       = "http://docs.oasis-open.org/wsn/bw-2"
wsrfbf      = "http://docs.oasis-open.org/wsrf/bf-2"
wsrfr       = "http://docs.oasis-open.org/wsrf/r-2"
wsrfrw  = "http://docs.oasis-open.org/wsrf/rw-2"
wstop       = "http://docs.oasis-open.org/wsn/t-1"
#   WS-Discovery 1.0 remapping
wsdd10__HelloType           = | wsdd__HelloType
wsdd10__ByeType                     = | wsdd__ByeType
wsdd10__ProbeType           = | wsdd__ProbeType
wsdd10__ProbeMatchesType    = | wsdd__ProbeMatchesType
wsdd10__ProbeMatchType              = | wsdd__ProbeMatchType
wsdd10__ResolveType         = | wsdd__ResolveType
wsdd10__ResolveMatchesType  = | wsdd__ResolveMatchesType
wsdd10__ResolveMatchType    = | wsdd__ResolveMatchType
#   SOAP-ENV mapping
SOAP_ENV__Envelope  = struct SOAP_ENV__Envelope { struct SOAP_ENV__Header *SOAP_ENV__Header; _XML SOAP_ENV__Body; }; | struct SOAP_ENV__Envelope
SOAP_ENV__Header    = | struct SOAP_ENV__Header
SOAP_ENV__Fault             = | struct SOAP_ENV__Fault
SOAP_ENV__Detail    = | struct SOAP_ENV__Detail
SOAP_ENV__Code              = | struct SOAP_ENV__Code
SOAP_ENV__Subcode   = | struct SOAP_ENV__Subcode
SOAP_ENV__Reason    = | struct SOAP_ENV__Reason

4.onvif.h 生成
copy typedamp.dat 到命令所在目錄
wsdl2h -P -x  -t ./typemap.dat -o onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/events/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/ver10/media/wsdl/media.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
注意:Note that the specifications are substantial in size. Option wsdl2h -P removes unnecessary class hierarchy dependences on the root type xsd__anyType. This option will reduce the code size. Option wsdl2h -x removes extensibility elements (xsd:anyAttribute attributes and xsd:any elements). If attribute and element extensions to a complexType are needed, then use the typemap.dat file to add these as additional optional members. For example, to extend tt__AudioDecoderConfigurationOptionsExtension complexType class with an element Address of type tt:IPAddress, then add to typemap.dat:
tt__AudioDecoderConfigurationOptionsExtension = $ tt__IPAddress Address;

5.onvif.h 中添加 #import "wsse.h"

6.生成gsoap骨架代碼
soapcpp2  -2 -L -x -i -Ed -f100 -d ../../onvifgen -I../../gsoap/import:../../gsoap  onvif.h
注:-f100 會生成多個soap文件,每個文件有N個序列化程序定義.如果不加此選項,生成的soapC.cpp文件有16M之大,編譯會卡死
注:Option soapcpp2 -2 forces SOAP 1.2, which is required by ONVIF. In some cases the wsdl2h conversion may not detect SOAP 1.2 and therefore we recommend this option.
Compile the soapcpp2-generated code together with custom/duration.c.
If WS-Discovery is used (e.g. with ONVIF remotediscovery), also include plugin/wsddapi.h in your code and compile plugin/wsddapi.c (see WS-Discovery documentation.
If it appears that multiple service operations are generated with the same name, such as GetServices and GetServices_ then remove http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl from the command line list of URLs because this WSDL is already imported by another WSDL.

7. 注銷生成的soapStub.h中 #define SOAP_WSA_2005

8.編譯自己的程序
需加入ssl頭文件位置  -I/home/llf/x86/openssl-install/include 及庫文件位置 -L/home/llf/x86/openssl-install/lib/

9.g++ 編譯時 -lgsoapssl++ -lssl -lcrypto -lz -lpthread 必須放到最后,且必須這個順序,不能放到-o的前面。否則鏈接不過,會報undedined reference...。

10年積累的網(wǎng)站設(shè)計、成都做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有玉泉街道免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

本文題目:gsoap+onvif編譯
文章鏈接:http://bm7419.com/article20/pcdpco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站營銷、面包屑導(dǎo)航網(wǎng)站制作、全網(wǎng)營銷推廣Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站