gSoap代碼生成

gSoap代碼生成工具

gSoap代碼生成工具,主要是針對onvif協議進行的一種協議的透明性封裝,先介紹一下gSoap: 

gSOAP編譯工具提供了一個SOAP/XML 關於C/C++ 語言的實現,從而讓C/C++語言開發web服務或客戶端程序的工作變得輕鬆了很多。絕大多數的C++web服務工具包提供一組API函數類庫來處理特定的SOAP數據結構,這樣就使得用戶必須改變程序結構來適應相關的類庫。與之相反,gSOAP利用編譯器技術提供了一組透明化的SOAP API,並將與開發無關的SOAP實現細節相關的內容對用戶隱藏起來。
onvif協議是網絡高清視頻行業的一個不是標準的標準,主要是因爲他的方便性和可擴展性得到各安防行業開發者的喜愛,具體協議內容可去onvif官方網站下載白皮書進行了解。
下面介紹gSoap工具生成代碼的步驟:
1.首先下載gSoap工具,本文使用的是2.8.11版本gsoap工具,生成的是cpp文件代理類型。當然也可以加入相應的選項生成c代碼(下面會介紹到)http://sourceforge.net/projects/gsoap2/下載網址。
2.下載wsdl文件,包括你再開發過程中使用到onvif協議的所有有關的wsdl文件,比如智能分析,鑑權,ptz等等wsdl文件,具體文件下載我也沒找到過,不過在生成的過程中,可以使用csdn上面的舊的版本,在生成過程中會自動連接網絡使用最新的wsdl版本進行生成。
        3.編輯批處理文件gen-cpp.bat,文件內容如下:
soapcpp2.exe -2 -j -x -L onvif.h -IG:\gSoap\gsoap-2.8\gsoap\import;G:\gSoap\gsoap-2.8\gsoap\
pause
gen-h.bat文件內容如下:
wsdl2h.exe -x -t typemap.dat -o onvif.h http://www.genivia.com/*.wsdl rem analytics.wsdl analyticsdevice.wsdl deviceio.wsdl devicemgmt.wsdl rem display.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl rem receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl
 
        其中 -2 表示使用的是gsoap1.2版本-對應爲2.8.XXX,關於版本的問題,可以找到gsoap裏面的doc目錄--soapdoc2.pdf進行了解;soapcpp2.exe,wsdl2h.exe在gsoap目錄下面的bin目錄下面,如果沒有則要自己編譯產生
            -S 僅生成客戶端代碼
            -c   產生純C代碼,否則是C++代碼,默認是cpp代碼
            -L   不要產生soapClientLib.c和soapServerLib.c文件
            -I    指定import路徑
            -x  不要產生XML示例文件
            -j   不要產生soap_Heade..等詳細定義
            -i   生成C++包裝,客戶端爲xxxxProxy.h(.cpp),服務器端爲xxxxService.h(.cpp)
4.使用gen-h.bat生成onvif.h文件(當然你可以設置這個文件的名字)通過-o選項,然後使用gen-cpp.bat生成所有的cpp文件,在gen-cpp.bat文件內容中,後面的**.wsdl表示你要使用到得所有的wsdl文件,如果你想去掉使用不到的文件,直接去掉即可。
5.整理你生成的代碼,然後將服務器和客戶端的代碼分離出來,(你也可以選擇只生成客戶端的代碼通過-s選項。然後測試你生成的代碼!


後面將貼出利用生成的代碼完成設備的發現和能力集獲取的使用過程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章