【问题标题】:How to make c++ server using gSOAP? [duplicate]如何使用 gSOAP 制作 c++ 服务器? [复制]
【发布时间】:2017-11-07 09:51:50
【问题描述】:

我正在制作服务器端,它将使用 gSOAP 用 c++ 编写。 我在“Server.h”文件中写了一些简单的“sum”函数。

//gsoap ns service name: Server
//gsoap ns service namespace: urn:Server
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded

int ns__sum(int a, int b, int *res);

然后我使用这个命令 soapcpp2 -i -s C:/Users/pc/Desktop/Server.h 生成了“Server.h”,我得到了这些文件:

soapServerService.h
soapServerService.cpp
soapServerProxy.h
soapServerProxy.cpp
Server.nsmap
soapStub.h
soapH.h
soapC.cpp

然后我尝试了这段代码:

#include "Server.nsmap"
#include "soapServerService.h"

int main() 
{
    ServerService server();
    server.serve();

    return 0;   
}

int ServerService::sum(int a, int b, int *res)
{
    *res = a + b;
    return SOAP_OK;
}

但我有一些这样的错误:

请求'server'中的成员'serve',它是非类类型 '服务器服务()

这是什么意思,我必须做什么?

【问题讨论】:

  • 该功能是否存在?
  • 是的。我查过了。

标签: c++ client-server gsoap


【解决方案1】:

创建ServerService对象时,将其创建为ServerService服务器。您将其创建为 ServerService server()

【讨论】:

  • 建议正确,原因不正确。 (使用的语法不创建对象,而是声明一个函数)。
  • 是的,它正在创建一个函数,对象服务器不存在,正在用于调用服务。这在我看来也是原因。楼主可以试试
  • 是的,我明白了。谢谢,但是当我声明 ServerService 服务器时;这里发生了一个错误“未定义对`ServerService::ServerService()'的引用
  • 有道理 - 当你只声明一个函数 ServerService server() 时,编译器还没有检查该函数将如何创建它的返回值。但是ServerService server; 的意思是“使用默认构造函数创建一个对象”。该默认构造函数显然应该存在才能使其正常工作。如果没有默认构造函数,只有需要参数的构造函数,则必须提供它们。
  • @MSalters 是绝对正确的..!作者:我的意思是你必须创建一个对象,查看类声明并构造一个对象来调用服务方法,在你发布的代码中你没有这样做
猜你喜欢
  • 1970-01-01
  • 2012-01-12
  • 2017-12-22
  • 2015-07-12
  • 2012-12-01
  • 1970-01-01
  • 2010-10-15
  • 2019-03-18
  • 2010-09-16
相关资源
最近更新 更多