我们将gSOAP与ONVIF wsdl一起使用。 2.8.10的回答与2.8.11&以上版本。这就是我们所面临的,
1. Installed 2.8.10 version.
2. Executed below command to generate header file for ONVIF event wsdl.
wsdl2h -c -t /usr/local/share/gsoap/WS/typemap.dat -o event.h http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl
3. soapcpp2 is invoked on header file (event.h) to generate both client and server side code.
soapcpp2 -c -t -I /usr/local/share/gsoap/import/:/usr/local/share/gsoap event.h
4. Respective structures will be generated in header file soapStub.h.
In soapStub.h look for structure,
struct _ns1__GetEventPropertiesResponse->struct ns7__TopicSetType ->char **__any
*** Repeat step 2 & 3 with 2.8.11/12/13 installed and look for structures in soapStub.h struct _tev__GetEventPropertiesResponse->struct wstop__TopicSetType ->char *__any
观察到两处变化,
关于命名空间。 ns1被替换为tev。(我们解决了它)
char __any是2.8.10中的双指针,但在上面的版本中,它是一个单指针。 (无法解决此问题)
我们关注char __any。
请您帮助我们理解为什么在2.8.11&以上版本。我们如何克服这个问题?
答案 0 :(得分:0)
要将xsd:any类型更改为char **,请将此行放入类型映射文件中。
xsd__any = | char**