使用gsoap 2.8.10生成的stdsoap.h与2.8.11版本的更高版本的差异&以上

时间:2013-01-29 11:21:58

标签: c soap wsdl gsoap onvif

我们将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

观察到两处变化,

  1. 关于命名空间。 ns1被替换为tev。(我们解决了它)

  2. char __any是2.8.10中的双指针,但在上面的版本中,它是一个单指针。 (无法解决此问题)

  3. 我们关注char __any。

    请您帮助我们理解为什么在2.8.11&以上版本。我们如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

要将xsd:any类型更改为char **,请将此行放入类型映射文件中。

xsd__any = | char**