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

当在一个工程中用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调用就用一个不同的命名空间就不会产生冲突。

你可能感兴趣的:(c++,webservice,c++)