gSOAP的共享接口之间的数据类型(gSoap shared data types between

2019-07-31 14:54发布

我想实现的是每个人实现自己的是接口gSOAP的两个窗口服务,无一不是客户端,每个接口的服务器。 所以我的问题是,我使用相同的数据类型在两个接口(与成员类),并产生与将创建两个不同的命名空间的soapcpp2.exe -q选项的C ++代码,这是好的,它的工作原理,但问题是这应该是在两个接口相等的数据类型是现在不同,由于名称空间分离,但是如果删除了命名空间我将有冲突,因为共享数据类型具有两个接口相同的名称。

“问题:

interface 1:
---
>class xsd__Address 
{ 
   char *email; 
   char *url; 
}; 

>int ns1__getAddress(xsd__Address& ret);

---
interface 2:
---
>class xsd__Address 
{ 
   char *email; 
   char *url; 
}; 

>int ns2__setAddress(xsd__Address& ret);

---

每个标题的定义后,我与soapcpp2.exe像编译:

soapcpp2.exe -qintf1 -n XXXX //用于接口1

soapcpp2.exe -qintf2 -n XXXX //用于接口2

所以,当我的项目中使用两个接口(接口1和接口2)当我需要的东西是这样的:

intf1::Interface1 int1;
int1.endpoint="xxx";
intf1::ns__Address address;
int1.ns1__getAddress(address);

intf2::Interface1 int2;
int2.endpoint="xxx";
int2.ns2_setAddress(address); //this don't compile like i was expecting because to the compiler they are not the same object (and it is wright...)

问题:

可能有共享的两个或多个接口之间的数据类型? 是? 这是怎么做到的呢?

如果没有什么是实现这一目标的最佳解决方案?

Answer 1:

最后我用gSOAP的(2008?)工作,但没有提供与共享结构的任何灵活性。 如果它今天可能在2013年我不能发表评论。

然而,作为一个快速的解决方法,你可以尝试合并2周的WSDL为一体(例如,作为构建的一部分),然后生成一个统一的SOAP堆栈。



Answer 2:

你已经有两个可能的解决方案:1.使用命名空间和与正式不同的数据类型以某种方式处理。 2.合并WSDL文件,并运行gSOAP的编译器只对结果一次。

我在2015年花了几个星期试图找到一个更好的解决方案,但没有任何。



文章来源: gSoap shared data types between interfaces
标签: c++ client gsoap