gsoap最新版本生成的代码与我们使用的版本不同

时间:2016-08-01 11:19:50

标签: c++ compatibility gsoap

我们正在将我们的gsoap版本从2.7.8升级到最新版本2.8.33

当我们的make文件使用完全相同的标志运行soapcpp2.exe和wsdl2h.exe时,我没有得到完全相同的类和API,所以我想我必须稍微调整一下

我们曾经使用这些标志运行soapcpp2.exe:-C -L -x -I

第一个值得注意的变化是从结构肥皂继承而不是指向它们的类。通过添加-j。

,我能够解决这个可塑性问题

现在,我遇到了另一个函数

的不可编程性
SOAP_FMAC5 int SOAP_FMAC6 soap_serve_request(struct soap *soap)

缺席。

我搜索了gsoap代码并找到了它,所以我想有一些方法可以让gsoap生成它。有没有办法让gsoap生成这个函数,或者我必须自己调整代码/编写函数

1 个答案:

答案 0 :(得分:1)

gsoap工具具有支持向后兼容性的选项。运行soapcpp2 -h以查看您的选项:

Usage: soapcpp2 [-0|-1|-2] [-C|-S] [-T] [-Ecdt] [-L] [-a] [-A] [-b] [-c|-c++|-c++11] [-d path] [-e] [-f N] [-h] [-i] [-I path:path:...] [-l] [-m] [-n] [-p name] [-Q name] [-q name] [-r] [-s] [-t] [-u] [-v] [-w] [-x] [-y] [-z#] [infile]
...
...
-z1 compatibility: generate old-style C++ service proxies and objects
-z2 compatibility with 2.7.x: omit XML output for NULL pointers
-z3 compatibility with 2.8.30 and earlier: _param_N is indexed globally

尝试-z1

PS。选项-z1的旧代理和服务类更简单,使用选项-j生成的新类是一种改进。但是,当您使用-j生成服务类时,具有全局函数的类似C的API已经消失(IMO是一件好事)。