精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源心得,转载请注明出处:锐英源,www.wisestudy.cn,孙老师作品,联系电话13803810136。
近期开发项目需要GSOAP,研究后发现确实好用,让程序员只考虑应用层的开发,通信层和协议层都由GSOAP负责了,不过因为这个工具负责的事情多,导致使用起来也有些困惑。最大的困惑是国内网站上写的文章和GSOAP最新版本有差异,典型的是ns__开头的函数处理上,国内文章说生成的模板文件里会有,但是实际上是没有的,要自己写函数实现,头文件里有函数声明,如果没有写实现,链接时会报符号未定义,当然还有些其它问题,这里把我总结的过程分享给大家:
,主要原因是.h文件里的函数要有ns__前缀,没有此前缀不会有结果,另外如果还没生成,用管理员身份运行cmd,把杀毒软件关掉,再试。
上面的接口函数在编译时会报“soap_default_wchar未定义标识符”错误。解决方法是:再定义一个带出参数,如下:
int SoundAlarm__SetAlrmDataXml(wchar_t* pszAlrmDataXml, int *pnRetCode)
用户如果对pnRetCode不感兴趣,不处理该返回值即可,貌似gsoap不支持只有一个参数且参数类型为wchar_t* 参数。
接着报service类的一个函数没有实现,接口函数没有实现。函数声明是a,但是在cpp里变成了serve_ns__a,可能要自己再写。不过看calc例子里calcProxy::add,用-i试下。自己加了函数,可以编译
加了run调用,可以用http://localhost:4567/访问一次,但再访问就不行了,也不知道如何和自己写的函数对接。
退出是下面break的问题
if (this->serve())
break;
没有传入接口名和参数,没进Dispatch,自然不行。
想要源代码,请联系锐英源,左侧有联系方式。