利用C++命名空间解决多个webservice调用冲突问题

本文介绍如何使用gSOAP工具生成非冲突的代码以支持在一个项目中调用多个WebService。通过创建独立的命名空间和定制化的编译指令,可以有效地避免不同WebService之间的代码冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当在一个工程中用gsoap调用多个webservice时,由gsoap产生的文件在编译时就会产生冲突,导致编译错误。下面就用公司ticket验证的例子说明怎么解决这个问题。

1. 生成envC.o

创建一个空的头文件:env.h。然后执行:

soapcpp2 -p env env.h

g++ -c envC.cpp

2. 生成stdcpp2.o

执行g++-c-DWITH_NONAMESPACESstdsoap2.cpp,用来生成stdcpp2.o.

Ps:stdsoap2.cpp 和stdsoap2.h可以在gsoap的文件夹中找到

3. 处理生成客户端代码

//-q:指定命名空间为pass

wsdl2h -s -qpass -o passport.h  http://XXXX?WSDL 

//生成 客户端代码

soapcpp2 -x -i -C -n -ppass passport.h

产生的文件如下:

Env.h pass.nsmap  passStub.h    envC.cpp  envH.h     passC.cpp 

passH.h   passPassportServiceSoapProxy.h  passport.h    stdsoap2.h  envStub.h 

passPassportServiceSoapProxy.cpp 


如此每加一个webservice调用就用一个不同的命名空间就不会产生冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值