2016-11-15 37 views
0

時只得到:「警告,而評估偵聽器回調時出現錯誤:」我有一個具有以下功能的Matlab的對象:交易工具箱:獨立運行程序

function obj = request_historical(obj,ticktype) 
     startdate = floor(now)-1500; 
     enddate = floor(now); 
     period = '1 day'; 
     tradehours = false; 
     eventhandler = 'IB_histHandler'; 

     d2 = history(obj.ib,obj.ibContract,startdate,enddate,ticktype,period,... 
     tradehours,eventhandler); 
    end 

然後我調用該函數。該功能發送歷史財務數據,並由另一個函數「IB_histhandler」處理。該功能與獨立程序位於同一目錄中。

它使用工作區通過MATLAB程序運行時,它工作正常,但每當我運行獨立編譯的程序,我收到了一堆警告:

Warning: Error occurred while evaluating listener callback. 
> In pause (line 21) 
    In IB_socket (line 432) 
    In start (line 13) 
    In tradingbot (line 31) 
Error using comeventcallback (line 24) 
Error firing event 'historicalData' to 'IB_histHandler'. 

它就像我的獨立的EXE程序不能找到「IB_histhandler」函數,就像程序在使用工作區通過MATLAB運行時發現它一樣。

任何想法??

回答

0

不知道這是否回答你的問題,但我通常把我的事件處理程序放入我的基類的靜態方法。這使得把手通過工具箱變得簡單。

在這個靜態方法中創建一個持久變量(matlab的靜態屬性版本),該持久變量包含一個可引發基類可訂閱的事件的對象。例如...

methods (Static) 

    function HandleEvents(newObject,varargin) 

     persistent obj 
     % obj is filled during base object construction... 
     if nargin==1 
      obj=newObject; 
      return 
     end % Rest of the function follows... 

您可以在基類中分配一個屬性來容納此對象的指針。

保持一個包裝在一個班級,併爲我工作的很好。