最近做项目,使用开源gsoap工具利用wsdl文件生成C语言通信框架。
我的编译环境是Ubuntu16,安装了gsoap默认版本。我的代码路径下,下载了soapcpp2及wsdl2h工具和配套的stdsoap2.c及stdsoap2.h文件。
① 编译框架的时候我执行了wsdl2h -c xxxx.wsdl;soapcpp2 -n -p server -c -S -L xxxx.h。编译未报错
② 用生成的.c .h放到我的源码下编译,报错:GSOAP VERSION xxxxxx MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE。各种搜索没有合理解决方案
查看wsdl2h版本猛然发现跟stdsoap2.h的版本号不一致,懵B一秒钟忽然想起来,我的stdsoap系列文件是跟当前目录可执行文件一套的吖不能用系统默认的gsoap工具,这不是傻了嘛
因此,该报错原因就是gsoap工具跟stdsoap2.c及stdsoap2.h文件版本不一致导致的,使用统一版本完美解决。