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

本文详细介绍使用gSOAP工具从创建头文件到生成可执行程序的全过程,包括处理客户端和服务端的WSDL文件,以及如何通过一系列命令行操作完成Webservice的搭建。

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

说明:本文参考gsoap文档

1. 生成envC.o

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

       soapcpp2 -penv env.h    

       g++ -c envC.cpp

2.  生成stdcpp2.o

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

 

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

 

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

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

 wsdl2h -s -qKpi -o KpiEngine.H KpiEngine.Wsdl 

 

 // 生成 客户端代码

 soapcpp2 -i -C -n -pKpi KpiEngine. h

 

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

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

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

 

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

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

wsdl2h -s  -qTest HelloWorldSer.Wsdl

 

soapcpp2 -i -t -S -n  HelloWorldSer.H

 

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

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

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

 

 

5.  生成可执行程序:

g++ -o main main.cpp stdsoap2.o envC.o KpiSoapProxy.O KpiC.O  TestSoapService.O  TestC.O

 

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值