You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用soapcpp2 2.8.117无法生成stdsoap2.c及版本不匹配问题求助

问题描述

我按照gSOAP官方教程构建Web服务,目标是从自动生成的calc.h构建calc.c示例,在Ubuntu中执行了以下命令:

wsdl2h -c -o calc.h http://www.genivia.com/calc.wsdl
soapcpp2 -CL calc.h
cc -o calc calc.c soapClient.c soapC.c stdsoap2.c

执行soapcpp2 -CL calc.h时,未生成stdsoap2.c文件,重装gSOAP包后问题依旧。从其他项目拷贝stdsoap2.c和stdsoap2.h后,又出现两个新错误:

  1. 编译时提示找不到calc.c文件
  2. gSOAP版本不匹配错误:
cc1: fatal error: calc.c: No such file or directory
compilation terminated.
In file included from soapH.h:16,
                 from soapClient.c:18:
soapStub.h:20:3: error: #error "GSOAP VERSION 208117 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
   20 | # error "GSOAP VERSION 208117 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
      |   ^~~~~
In file included from soapH.h:16,
                 from soapC.c:19:
soapStub.h:20:3: error: #error "GSOAP VERSION 208117 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
   20 | # error "GSOAP VERSION 208117 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
      |   ^~~~~

正确操作步骤

1. 安装完整的gSOAP开发包

Ubuntu下需安装包含头文件和库源码的开发包,而非仅基础包:

sudo apt-get install libgsoap-dev

安装完成后,stdsoap2.c和stdsoap2.h会存放在/usr/include/gsoap/目录下,无需手动拷贝其他版本文件。

2. 修正soapcpp2命令参数

-CL参数仅生成客户端相关文件,calc.c不会由该命令生成——它是需要你自行编写的客户端逻辑代码(可参考官方教程提供的示例模板)。同时,添加-I参数指定gSOAP的import目录,避免路径问题:

soapcpp2 -CL -I/usr/include/gsoap/import calc.h

3. 编译客户端程序

  • 先将官方教程中的calc.c示例代码创建到当前工作目录;
  • 编译时指定gSOAP头文件路径,直接调用系统安装的stdsoap2.c,确保版本一致:
cc -o calc calc.c soapClient.c soapC.c /usr/include/gsoap/stdsoap2.c -I/usr/include/gsoap/

4. 彻底解决版本不匹配问题

若之前手动拷贝过其他版本的stdsoap2.c和stdsoap2.h,请立即删除这些文件。如果仍存在版本问题,卸载现有gSOAP包后重新安装:

sudo apt-get purge libgsoap*
sudo apt-get install libgsoap-dev

内容的提问来源于stack exchange,提问作者Lunodzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:50:26