我的首要目标是创建一个小型ONVIF客户端,用于获取C或C ++中的摄像头信息。
gSOAP似乎是一个很好的候选人,我想要实现的第一件事就是制作一个小型控制台应用程序,它将使用WS-Discovery列出我在网络上拥有的一堆相机的地址,这是我以前做过的事情。一个小的.NET应用程序。问题是我在第一道障碍时遇到了磕磕绊绊而且我对我应该做的事感到困惑。我开始做以下事情:
wsdl2h.exe -o WSDiscovery.h WS-Discovery.wsdl http://www.w3.org/2006/03/addressing/ws-addr.xsd
soapcpp2.exe -i -C -Iimport WSDiscovery.h -d output
,
然后,我根据生成的soapC.cpp
stdsoap2.cpp
soapH.h
soapStub.h
制作了一个项目。从gsoap添加threads.h
wsaapi.h
wsddapi.h
threads.c
wsaapi.c
wsddapi.c
这不会编译但是给出:
wsaapi.h(134): error C2061: syntax error : identifier 'wsa__FaultSubcodeValues'
我认为我在这里走错了,我对gSOAP背景下的'插件'究竟是什么感到困惑(我对这类外部库的体验非常有限,我在CS中没有真正的正式培训)。我应该用wsdd文件做我正在做的事情,还是应该用作soapcpp2.exe进程的一部分?如果我只想要WS-Discovery,我真的应该使用wsdl2h.exe吗?
我无法真正理解文档,也不明白我应该如何使用它。一些帮助将不胜感激,所以我可以坚持实际的困难部分!
答案 0 :(得分:2)
我想问题来自使用带有http://www.w3.org/2006/03/addressing/ws-addr.xsd架构的WS-Adressing插件(wsaapi.h / .c)。
gSOAP包含可由WS-discovery插件(wsddapi.h / .c)使用的wsdl2h生成的文件。
由于ONVIF使用WS-Discovery 1.0,您可以使用以下方法生成发现实现:
soapcpp2 -Cx [GSOAP_DIR]/import/wsdd10.h -I [GSOAP_DIR]/import -d output
接下来你应该能够构建你的项目,包括wsddapi.c wsaapi.c soapClient.cpp soapC.cpp
你可以从github ws-discovery
找到我的一些实验