分享

gsoap生成完整的onvif骨架代码

 gljin_cn 2014-08-08

之前只用单个remotediscovery.wsdl 文件做discovery的时候 ,用onvif测试工具测试正常,自动搜索和点对点都OK,但是生成整个onvif代码的时候发送probe发现不了设备 ,基于这个问题纠结了好久 ,用wireshark抓包也没看出个所以然来 ,后来经高人指点 ,对比单个remotediscovery.wsdl 文件生成的头文件和多个.wsdl文件生成的头文件发现生成整个框架的头文件里面少了这句 #import "soap12.h"  ,加上这句后再生成骨架代码之后就解决了

这里在叙述下生成整个骨架代码的过程 

首先生成头文件 :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根据你自己文件路径填写,还有WINDOWS下文件目录是“\”linux下文件目录是“/”, 可能不能一次成功 ,我试了很多次 ,提示经常出现http的握手不成功 ,还有其他的提错误,这个是网络问题 ,多试几次,不需要改typemap.dat文件 能成功的

生成骨架代码: soapcpp2 -c onvif.h -x -I /root/onvif/gsoap-2.8/gsoap/import -I /root/onvif/gsoap-2.8/gsoap/ 这些当然要根据你的文件路径,生成骨架代码后会报错 :1 semantic error  这个没有影响  ,然后拷贝gsoap/cunstom/ 下的duration.c 和duration.h到你的工程 ,编译可能出现重复定义函数的错误,注释多余的,编译就能通过了 ,

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多