从2个头文件生成2个wsdl,导入第三个.h文件而不获取双重结构

时间:2015-06-11 10:35:42

标签: c++ wsdl gsoap

我有一些C ++头文件,我想使用gSOAP通过webservice提供他们的内容。 标题是:

Shared.h, 
A.h,
B.h; 

A.h和B.h包括(导入)Shared.h文件。

我生成了两个单独的WSDL文档:A.wsdl和B.wsdl然后我使用wsdl2h工具将它们构建到单个头文件(final.h)中。

wsdl2h -x -o A.wsdl B.wsdl -tC:\gsoap-2.8.22\gsoap\typemap.dat

之后,我用soapcpp2编译了fin​​al.h文件,以获得两个代理服务的C ++存根(对应于上面提到的两个WSDL)。

soapcpp2 -j -S final.h -IC:\gsoap-2.8.22\gsoap\import;C:\gsoap-2.8.22\gsoap -x -2
soapcpp2 -j -C final.h -IC:\gsoap-2.8.22\gsoap\import;C:\gsoap-2.8.22\gsoap -x -2

已经使用了两个不同的命名空间,每个WSDL一个,并且一切正常,但是存在问题。由于Shared.h文件是由Ah和Bh文件导入的,因此在其中编码的数据结构在final.h文件中出现两次(一次使用与A名称空间关联的A__前缀,一次使用与之相关联的B__前缀) B名称空间)。

如何设法避免此问题并仅获取一次?

我尝试生成第三个WSDL(Shared.wsdl),但我不知道如何将其导入A.wsdl和B.wsdl。可能吗?我应该如何修改A.h和B.h文件呢?

我应该遵循另一个程序吗?

0 个答案:

没有答案