gsoap最新版本生成的代码与我们使用的版本不同
gsoap latest version generates different code than the version we use
我们正在将我们的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是件好事)。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 我们可以访问一个不存在的联盟的成员吗
- 导入库可以跨dll版本工作吗
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 我们可以删除链表中静态内存中的节点吗
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我们如何将CMake或ndk-build集成到Android Studio 3.0.1中?Gradle 版本是 4.1,
- 我们可以在Mac上有多个张量流式版本吗?
- 为什么我们在c++中有不同版本的主要函数
- gsoap最新版本生成的代码与我们使用的版本不同
- 当我们链接同一库的不同版本时会发生什么?