2012-04-20 53 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