我有一些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编译了final.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文件呢?
我应该遵循另一个程序吗?