2012-04-20 142 views
0

最近我有一个使用gSOAP构建的小型C++ SOAP客户端项目(ubuntu linux)。我正在使用2个Web服务类,我相信我已根据文档正确创建了这些类。但是,我有我的代码gSOAP分段错误

#include "envH.h" 
    #include "betfairBFGlobalServiceProxy.h" 
    #include "betfairBFExchangeServiceProxy.h" 
    //#include "betfair.nsmap" 
    #include <iostream> 
    #include <string> 
    // Following included to prevent ligsoap++ complaining of undefined references 
    // to 'namespaces' 
    SOAP_NMAC struct Namespace namespaces[] = {}; 

    using namespace std; 
    using namespace betfair; 


    int main() 
    { 
     BFGlobalServiceProxy bf; 

     BFExchangeServiceProxy betfair2; /* CRASH!! */ 
     return 0; 
    } 

我要让API调用两个Web服务,但在其中创建第二个服务代理对象点我的程序崩溃的问题。我使用wsdl2h -gbetfair选项和soapcpp2 -i -n选项创建了一个新的env.h文件,当使用C++命名空间创建多个客户端服务时,根据文档中的要求,在链接到libgsoap ++时避免链接器错误。任何人都可以看到我在做什么错?

+1

我们很乐意提供帮助,但这很难理解。试着让你的问题更清楚一点。 – Shep 2012-04-20 21:34:59

+0

简而言之,我有2个由gSOAP创建的客户端代理类 - 当我在创建第二个程序的时候实例化每个程序崩溃时,我不知道为什么。 – mathematician1975 2012-04-20 23:37:54

回答

0

我不能再现问题,所以我不确定我的猜测。数组命名空间是在.nsmap文件中定义的。您的代码在.nsmap文件的#include中有注释,如果此数组为空,gSOAP可能不喜欢。你真的必须保持#include“betfair.nsmap”注释掉?

+0

是的,因为我使用名称空间构建它,所以引用的实际名称空间[]数组实际上并不存在,但仍由libgsoap ++库引用,所以我必须声明一些链接才能发生。从我所看到的gSOAP代码根本不像我在同一范围内有2个代理类的实例。对于我没有在文档中读过的资源,我必须有一些初始化问题,因为它只适用于一个对象。不幸的是,这是毫无价值的,因为我需要同一个应用程序中的两个Web服务也许它导致问题的openSSL。我放弃了 – mathematician1975 2012-05-10 10:27:39