说明:本文参考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中。