關於C++與Matlab混合編程錯誤??? Unexpected Standard exception from MEX file.



最近在用c++和matlab 混合編程是遇到了一些問題,以下:c++

??? Unexpected Standard exception from MEX file.
What() is:c:program
編程


Error in ==> mscale at 32
   [rho,s] = matscale(abs(a),0.01);
spa

Error in ==> utScaledExpm at 7
[s,junk,a] = mscale(a,'noperm','safebal');
code

Error in ==> ssdata.utDiscretizeZOH at 171
      s = utScaledExpm([[a b]*Ts; zeros(nu,nx+nu)]);
內存

Error in ==> ssdata.trespSetUp at 104
            [D,XMap] = utDiscretizeZOH(D,dt,XMap);
get

Error in ==> ltidata.timeresp at 78
   [Dsim,dt,tf,SimInfo] =
   trespSetUp(D,RespType,dt,tf,x0);
io

Error in ==> lti.step at 67
      [y,t,focus] = timeresp(D,'step',t);
容器

Error in ==> step at 125
   yout = step(sys,t);
配置

關於異常,請參加:http://www.cplusplus.com/reference/exception/exception/file


1. 直接在網上的程序或者直接用的別人的code,會因爲配置以及環境問題致使問題,此處並不必定拋出異常,比較容易查找;
2. 程序當時的Matlab版本不一樣與本身目前的Matlab版本不一樣,有致使拋出異常的可能性,而且本身也有經歷;

3.有時候,若是用C++的容器(list、vector等),若是size 或者迭代器使用不當也會致使越界訪問異常,特別是對於容器的邊界,尤爲注意,本人曾在這裏不止吃了一次苦頭!
4. 由於內存分配與釋放問題,在程序運行幾回後,你的CPU佔用率很高的話,就應該考慮此緣由,是否是忘記release resource了!

查找錯誤的關鍵在於跟蹤與定位,切記哦!

相關文章
相關標籤/搜索