如何将多个gsoap客户端Web服务编译成一个可执行文件?

时间:2011-12-29 14:57:56

标签: c++ web-services gsoap

我使用gSOAP进行网络服务,但我必须遇到问题 将2个Web服务编译成一个可执行文件,还有一些 函数具有相同的名称而不是使用的参数 函数名的其他前缀。

编译错误:

X.o: In function `soap_get_string(soap*, char**, char const*, char const*)':
X.cpp:8669: multiple definition of `soap_get_string(soap*, char**, char const*, char const*)'
Y.o:Y.cpp:4763: first defined here

在Makefile中:

wsdl2h -qlpr X.wsdl
wsdl2h Y.wsdl Y.xsd
soapcpp2 -qlpr -plpr -plprws $(GSOAP_IMPORT) -i -C X.h
soapcpp2 -psiwcprws $(GSOAP_IMPORT) -i -C Y.h

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

  

19.34如何将多个客户端和服务器实现组合到一个可执行文件中wsdl2h工具可用于导入多个WSDL   和模式一下子。服务定义合二为一   soapcpp2要解析的头文件。分配是很重要的   使用typemap.dat文件命名空间URI的名称空间前缀。   否则,wsdl2h将分配名称空间前缀ns1,ns2等   到服务操作和模式类型。因此,对WSDL的任何更改   或者模式可能导致新的前缀分配。更多细节,   请参见第8.2节。另一种结合多个客户端的方法   并将应用程序服务到一个可执行文件中是使用C ++   命名空间在结构上分离定义或通过创建C   客户端/服务器对象的库,如后续所述   部分。这是使用wsdl2h选项-q自动完成的。两种方法都是   通过gSOAP分布中的例子证明了样本/链接(C.   只有)和samples / link ++(带有C ++名称空间的C ++)示例。