使用gsoap 2.8.10生成的stdsoap.h与2.8.11及以上版本的更高版本之间存在差异

问题描述 投票:1回答:1

我们将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中的双指针,但在上面的版本中,它是一个单指针。 (无法解决这个问题)

我们关心char __any。

能帮助我们理解为什么在2.8.11及以上版本中出现这种差异。我们如何克服这个问题?

c soap wsdl gsoap onvif
1个回答
0
投票

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

xsd__any = | char**
© www.soinside.com 2019 - 2024. All rights reserved.