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

gsoap latest version generates different code than the version we use

本文关键字:版本 我们 代码 新版本 最新版 gsoap      更新时间:2023-10-16

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

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

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

第一个明显的变化是从structs-soap继承的类,而不是指向它们。我能够通过添加-j来解决这个兼容性问题。

现在,我遇到了另一个不兼容的功能

SOAP_FMAC 5 int SOAP_FMAC 6 SOAP_server_request(struct-SOAP*SOAP)

缺席。

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

gsoap工具具有支持向后兼容性的选项。运行soapcp2-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是件好事)。