当在一个工程中用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