我使用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
有谁知道如何解决这个问题?
答案 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 ++)示例。