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

Svi*_*ack 4 c++ web-services gsoap

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
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

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

Svi*_*ack 6

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