之前只用單個(gè)remotediscovery.wsdl 文件做discovery的時(shí)候 ,用onvif測(cè)試工具測(cè)試正常,自動(dòng)搜索和點(diǎn)對(duì)點(diǎn)都OK,但是生成整個(gè)onvif代碼的時(shí)候發(fā)送probe發(fā)現(xiàn)不了設(shè)備 ,基于這個(gè)問(wèn)題糾結(jié)了好久 ,用wireshark抓包也沒(méi)看出個(gè)所以然來(lái) ,后來(lái)經(jīng)高人指點(diǎn) ,對(duì)比單個(gè)remotediscovery.wsdl 文件生成的頭文件和多個(gè).wsdl文件生成的頭文件發(fā)現(xiàn)生成整個(gè)框架的頭文件里面少了這句 #import "soap12.h" ,加上這句后再生成骨架代碼之后就解決了 這里在敘述下生成整個(gè)骨架代碼的過(guò)程 首先生成頭文件 :wsdl2h -o onvif.h -c -s -t .\typemap.dat http://www./onvif/ver10/device/wsdl/devicemgmt.wsdl http://www./onvif/ver10/event/wsdl/event.wsdl http://www./onvif/ver10/display.wsdl http://www./onvif/ver10/deviceio.wsdl http://www./onvif/ver20/imaging/wsdl/imaging.wsdl http://www./onvif/ver10/media/wsdl/media.wsdl http://www./onvif/ver20/ptz/wsdl/ptz.wsdl http://www./onvif/ver10/receiver.wsdl http://www./onvif/ver10/recording.wsdl http://www./onvif/ver10/search.wsdl http://www./onvif/ver10/network/wsdl/remotediscovery.wsdl http://www./onvif/ver10/replay.wsdl http://www./onvif/ver20/analytics/wsdl/analytics.wsdl http://www./onvif/ver10/analyticsdevice.wsdl http://www./onvif/ver10/schema/onvif.xsd http://www./ver10/actionengine.wsdl typemap.dat根據(jù)你自己文件路徑填寫(xiě),還有WINDOWS下文件目錄是“\”linux下文件目錄是“/”, 可能不能一次成功 ,我試了很多次 ,提示經(jīng)常出現(xiàn)http的握手不成功 ,還有其他的提錯(cuò)誤,這個(gè)是網(wǎng)絡(luò)問(wèn)題 ,多試幾次,不需要改typemap.dat文件 能成功的 生成骨架代碼: soapcpp2 -c onvif.h -x -I /root/onvif/gsoap-2.8/gsoap/import -I /root/onvif/gsoap-2.8/gsoap/ 這些當(dāng)然要根據(jù)你的文件路徑,生成骨架代碼后會(huì)報(bào)錯(cuò) :1 semantic error 這個(gè)沒(méi)有影響 ,然后拷貝gsoap/cunstom/ 下的duration.c 和duration.h到你的工程 ,編譯可能出現(xiàn)重復(fù)定義函數(shù)的錯(cuò)誤,注釋多余的,編譯就能通過(guò)了 , |
|