关闭

gsoap生成完整的onvif骨架代码

827人阅读 评论(1) 收藏 举报

之前只用单个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.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/event/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 http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl  http://www.onvif.org/onvif/ver10/schema/onvif.xsd  http://www.onvif.org/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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1996次
    • 积分:36
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章存档
    最新评论