一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

gSOAP搭建ONVIF(C++)客戶端開發(fā)框架--windows&ubuntu

 補丁牛仔褲 2023-04-18 發(fā)布于廣東

折騰幾天,看了很多博客,終于弄出來了。
一:gSOAP搭建ONVIF (C++)客戶端開發(fā)框架 --windows
二:gSOAP搭建ONVIF (C++)客戶端開發(fā)框架 --linux

1. gSOAP工具下載

gSOAP里邊的soapcpp2.exe和wsdl2.exe的版本是對應(yīng)的
gSOAP下載
在這里插入圖片描述

2.搜集需要的文件

  1. 創(chuàng)建目錄F:\onvifFrameworkC
  2. F:\gsoap_2.8.112\gsoap-2.8\gsoap下的plugin,import,custom復(fù)制到F:\onvifFrameworkC
  3. 換將wsdl2h.exe和soapcpp2.exe復(fù)制到F:\onvifFrameworkC目錄下
  4. F:\gsoap_2.8.112\gsoap-2.8\gsoap下的stdsoap2.cpp,stdsoap2.h,dom.cpp復(fù)制到F:\onvifFrameworkC
  5. F:\gsoap_2.8.112\gsoap-2.8\gsoap下的typemap.dat復(fù)制到F:\onvifFrameworkC

以后的所有操作都在目錄F:\onvifFrameworkC進行

3.修改一些文件

  1. 防止出現(xiàn)LONG64的錯誤和'SOAP_TYPE_xsd__duration’ was not declared in this scope錯誤,需要在typemap.dat中
 # xsd__duration = #import "custom/duration.h" | xsd__duration
改成
xsd__duration = #import "custom/duration.h" | xsd__duration
  1. 防止SOAP_ENV__Fault重復(fù)錯誤,修改F:\onvifFrameworkC\import下邊的wsa5.h。這里把SOAP_ENV__Fault的名字改了
    在這里插入圖片描述

4.生成onvif.h

(1)需要的wsdl文件和xsd文件http,每個用空格隔開。
windows下邊的wsdl2h.exe不支持HTTPS下載,所以使用HTTP

wsdl2h -x -t typemap.dat -o onvif.h http://www./onvif/ver10/network/wsdl/remotediscovery.wsdl http://www./onvif/ver10/device/wsdl/devicemgmt.wsdl http://www./onvif/ver10/media/wsdl/media.wsdl http://www./onvif/ver20/ptz/wsdl/ptz.wsdl http://www./onvif/ver10/search.wsdl http://www./onvif/ver10/display.wsdl http://www./onvif/ver10/deviceio.wsdl http://www./onvif/ver10/event/wsdl/event.wsdl http://www./onvif/ver10/receiver.wsdl http://www./onvif/ver10/recording.wsdl

(2)打開CMD,輸入命令cd /d F:\onvifFrameworkC再輸入上邊這個命令得到onvif.h。
在這里插入圖片描述
此時會產(chǎn)生一個onvif.h文件,這個文件很大。
(3)因鑒權(quán)需要,修改onvif.h頭文件,在onvif.h中添加

#import "wsse.h"

在這里插入圖片描述
此時F:\onvifFrameworkC下有這些文件
在這里插入圖片描述

5.使用gSOAP生成onvif開發(fā)框架代碼

soapcpp2 命令如下

soapcpp2 -2 -x -C onvif.h  -L -Iimport

在這里插入圖片描述
此時F:\onvifFrameworkC下有這些文件在這里插入圖片描述

6.創(chuàng)建新的目錄F:\onvifApi放onvif開發(fā)框架的代碼

(1)gSOAP生成的文件中提取以下幾個放到F:\onvifApi

soapC.cpp
soapClient.cpp
soapH.h
soapStub.h
wsdd.nsmap

(2)再提取以下幾個放到F:\onvifApi

dom.c
dom.h
duration.cpp
duration.h
mecevp.c
mecevp.h
smdevp.c
smdevp.h
stdsoap2.c
stdsoap2.h
threads.c
threads.h
wsa5.h
wsaapi.c
wsaapi.h
wsseapi.c
wsseapi.h
struct_timeval.h
struct_timeval.c

(3)把里邊所有的c改為cpp。有的文件既有C也有CPP,在F:\onvifApi中只保留cpp
修改stdsoap2.cpp文件,添加#include "wsdd.nsmap"
在這里插入圖片描述
在soapStub.h文件中,列出了WEB服務(wù)的所有接口(Client-Side Call Stub Functions),我們的應(yīng)用程序通過調(diào)用這些接口就成了,至于SOAP協(xié)議整個過程怎么實現(xiàn)的,都在soapC.c和soapClient.c中。

7.驗證

在VS2017中創(chuàng)建新工程,添加目錄,并把F:\onvifApi所有文件加入到工程。
在這里插入圖片描述

(1)因為文件太大,需要添加/bigobj
在這里插入圖片描述
(2)在預(yù)處理器中添加 _CRT_SECURE_NO_WARNINGS
在這里插入圖片描述

(3)出現(xiàn)錯誤 C1083 無法打開包括文件: “openssl/evp.h”: No such file or directory
在這里插入圖片描述
這是因為鑒權(quán)需要OPEN-SSL支持。
選擇Win32
在這里插入圖片描述
這里安裝好以后把目錄和庫添加到項目設(shè)置,(平臺可以看到是win32所以開發(fā)的程序是Win32)
在這里插入圖片描述
預(yù)處理器添加WITH_OPENSSL
鏈接器的輸入添加libcrypto.lib,libssl.lib
(4)在這里插入圖片描述
這是因為沒有添加struct_timeval.cpp和struct_timeval.h,把兩個文件添加到F:\onvifApi目錄,并且加入到工程。
(5)在這里插入圖片描述
這是因為沒有添加duration.cpp和duration.h,把兩個文件添加到F:\onvifApi目錄,并且加入到工程。
完整的工程目錄如下:
在這里插入圖片描述

此時編譯可以通過且可以F11進入soap_new()單步調(diào)試。
在這里插入圖片描述
到此,大工告成!

主要借鑒:https://blog.csdn.net/weixin_44517656/article/details/115120199
https://blog.csdn.net/benkaoya/article/details/72424335

一:編譯gSoapg

(1)安裝依賴庫

sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install openssl

(2)gSoapg源碼下載https:///projects/gsoap2/

(3)編譯:支持鑒權(quán)。

 cd gsoap-2.8/
 sudo ./configure --with-openssl=/usr/local/OpenSSL
 sudo make
 sudo make install

2.搜集需要的文件

  1. 創(chuàng)建目錄 mkdir /home/usr/onvif
  2. gsoap_2.8.112/gsoap-2.8/gsoap下的plugin,import,custom復(fù)制到/home/usr/onvif
  3. 換將wsdl2h和soapcpp2復(fù)制到/home/usr/onvif目錄下
  4. gsoap_2.8.112/gsoap-2.8/gsoap下的stdsoap2.cpp,stdsoap2.h,dom.cpp復(fù)制到/home/usr/onvif
  5. gsoap_2.8.112/gsoap-2.8/gsoap下的typemap.dat復(fù)制到/home/usr/onvif

以后的所有操作都在目錄/home/usr/onvif進行

3.修改一些文件

  1. 防止出現(xiàn)LONG64的錯誤和'SOAP_TYPE_xsd__duration’ was not declared in this scope錯誤,需要在typemap.dat中
 # xsd__duration = #import "custom/duration.h" | xsd__duration
改成
xsd__duration = #import "custom/duration.h" | xsd__duration
  1. 防止SOAP_ENV__Fault重復(fù)錯誤,修改F:\onvifFrameworkC\import下邊的wsa5.h。這里把SOAP_ENV__Fault的名字改了
    在這里插入圖片描述

4.生成onvif.h

(1)wsdl下載命令。

./wsdl2h -x -t typemap.dat -o onvif.h http://www./onvif/ver10/network/wsdl/remotediscovery.wsdl http://www./onvif/ver10/device/wsdl/devicemgmt.wsdl http://www./onvif/ver10/media/wsdl/media.wsdl http://www./onvif/ver20/ptz/wsdl/ptz.wsdl http://www./onvif/ver10/search.wsdl http://www./onvif/ver10/display.wsdl http://www./onvif/ver10/deviceio.wsdl http://www./onvif/ver10/event/wsdl/event.wsdl http://www./onvif/ver10/receiver.wsdl http://www./onvif/ver10/recording.wsdl

(2)此時會產(chǎn)生一個onvif.h文件,這個文件很大。
因鑒權(quán)需要,修改onvif.h頭文件,在onvif.h中添加

#import "wsse.h"

5.使用gSOAP生成onvif開發(fā)框架代碼

./soapcpp2 -2 -x -C onvif.h  -L -Iimport

6.創(chuàng)建新的目錄/home/usr/onvif_dev放onvif開發(fā)框架的代碼

(1)gSOAP生成的文件中提取以下幾個放到/home/usr/onvif_dev,其他的文件全部舍棄

soapC.cpp
soapClient.cpp
soapH.h
soapStub.h
wsdd.nsmap

(2)再提取以下幾個放到/home/usr/onvif_dev

dom.c
dom.h
duration.cpp
duration.h
mecevp.c
mecevp.h
smdevp.c
smdevp.h
stdsoap2.c
stdsoap2.h
threads.c
threads.h
wsa5.h
wsaapi.c
wsaapi.h
wsseapi.c
wsseapi.h
struct_timeval.h
struct_timeval.c

(3)把里邊所有的c改為cpp。有的文件既有C也有CPP,在/home/usr/onvif_dev中只保留cpp
(4)修改stdsoap2.cpp文件,添加#include "wsdd.nsmap"
在這里插入圖片描述
在soapStub.h文件中,列出了WEB服務(wù)的所有接口(Client-Side Call Stub Functions),我們的應(yīng)用程序通過調(diào)用這些接口就成了,至于SOAP協(xié)議整個過程怎么實現(xiàn)的,都在soapC.c和soapClient.c中。
到此, ubuntu環(huán)境下的onvif搭建成功,步驟基本和windows下一致!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    深夜视频成人在线观看| 欧美日韩国产亚洲三级理论片| 麻豆国产精品一区二区三区| 午夜精品国产一区在线观看| 成人精品一级特黄大片| 国产精品制服丝袜美腿丝袜| 熟女免费视频一区二区| 日本少妇三级三级三级| 亚洲一区二区三区四区| 欧美日韩国产午夜福利| 日本加勒比在线播放一区| 国产精品丝袜美腿一区二区| 亚洲国产av精品一区二区| 欧美中文字幕日韩精品| 日韩精品你懂的在线观看| 亚洲欧美日韩综合在线成成| 丁香六月啪啪激情综合区| 久久99国产精品果冻传媒| 麻豆欧美精品国产综合久久| 麻豆欧美精品国产综合久久| 日韩一级毛一欧美一级乱| 亚洲欧美一二区日韩高清在线| 亚洲精品成人午夜久久| 久久精品中文字幕人妻中文| 九九视频通过这里有精品| 久久三级国外久久久三级| 99热中文字幕在线精品| 色一情一伦一区二区三| 中文精品人妻一区二区| 中文字幕乱子论一区二区三区| 亚洲中文字幕人妻av| 国产av一二三区在线观看| 日韩不卡一区二区在线| 久久热九九这里只有精品| 国产目拍亚洲精品区一区| 精品一区二区三区人妻视频| 欧美一区二区三区不卡高清视| 国产丝袜极品黑色高跟鞋| 99日韩在线视频精品免费| 大香蕉精品视频一区二区| 内射精品欧美一区二区三区久久久|