利用C++命名空间解决多个wsdl编译冲突的问题

本文介绍如何使用gSOAP工具从WSDL文件生成客户端和服务端代码,并通过具体步骤演示了如何编译这些代码以创建可执行程序。适用于希望了解WebService开发及gSOAP使用的开发者。

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

说明:本文参考gsoap文档

1. 生成envC.o

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

soapcpp2-penvenv.h

g++-cenvC.cpp

2. 生成stdcpp2.o

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

下面的例子同时处理两个不同的wsdl文件,一个wsdl生成客户端代码,一个wsdl生成服务端代码,最后它们分别生成的代码可以编译在一块。这样可以实现一个wsdl生成的服务端代码可以调用另一个wsdl生成的客户端代码,从而实现webservice的嵌套调用。

3. 处理生成客户端代码的wsdl

//-q:指定命名空间为Kpi。

wsdl2h-s-qKpi-oKpiEngine.HKpiEngine.Wsdl

//生成 客户端代码

soapcpp2-i-C-n-pKpiKpiEngine. h

假设生成后的代码为:KpiSoapProxy.cpp、KpiC.Cpp

执行:g++-cKpiSoapProxy.Cpp,生成KpiSoapProxy.o

执行:g++-cKpiC.Cpp,生成KpiC.o

4. 处理生成服务端代码的wsdl

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

wsdl2h-s-qTestHelloWorldSer.Wsdl

soapcpp2-i-t-S-nHelloWorldSer.H

假设生成后的代码为:TestSoapService.cpp、TestC.Cpp

执行:g++-cTestSoapService.Cpp,生成TestSoapService.O

执行:g++-cTestC.Cpp,生成TestC.o

5. 生成可执行程序:

g++-omainmain.cppstdsoap2.oenvC.oKpiSoapProxy.OKpiC.OTestSoapService.OTestC.O

以上的步骤可以组合到一个makefile中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值