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

How to compile multiple gsoap client webservices into one executable?

本文关键字:可执行文件 一个 编译 web gsoap 客户端 服务      更新时间:2023-10-16

我使用gSOAP的web服务,但我有一个问题,我必须将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
有谁知道怎么解决这个问题吗?

19.34如何将多个客户端和服务器实现合并为一个可执行文件wsdl2h工具可以用于导入多个wsdl和模式。服务定义组合为一个soapcpp2要解析的头文件。分配是很重要的使用typemap.dat文件将名称空间前缀添加到名称空间uri。否则,wsdl2h将分配名称空间前缀ns1、ns2等到服务操作和模式类型。因此,对WSDL的任何更改或者模式可能导致新的前缀赋值。欲知详情,请请参见8.2节。另一种组合多个客户机的方法将服务应用程序整合到一个可执行文件中是通过使用c++实现的命名空间来从结构上分隔定义,或者通过创建C客户端/服务器对象的库,将在后面解释部分。这是通过wsdl2h选项-q自动完成的。两种方法都是通过gSOAP发行版中的示例进行演示,示例/链接(C(仅限)和samples/link++(带有c++命名空间的c++)示例。