2010-11-24 16 views
2

Simulink S-FunctionにパックしたいC++ルーチンがあります。このC++ルーチンは、他のいくつかのC++ファイルにある他のルーチンを呼び出します。Simulink S-Function with C++コードはコンパイルされますが、生成/設定時にエラーが発生します

legacy_codeツールを使用してすべてをコンパイルすることができました(つまり、mexglxファイルが生成されました)。ただし、次の警告が発行されます。

Warning: You are using gcc version "4.4.4-14ubuntu5)". The earliest gcc version 
supported with mex is "4.1". The latest version tested for use with mex 
is "4.2". To download a different version of gcc, visit http://gcc.gnu.org 

私は、コマンドを発行することにより、S-Functionブロックを生成しようとすると問題が発生:この時点で

legacy_code('slblock_generate', def); 

、GLIBCXXに言及し、次のエラーをバージョンが呼び出されました:

??? Error using ==> iAddSfunctionBlock at 183 
Error due to multiple causes. 

Error in ==> 
/opt/matlab/toolbox/simulink/simulink/+legacycode/@LCT/generateslblock.p> 
generateslblock at 55 


Error in ==> /opt/matlab/toolbox/simulink/simulink/legacy_code.p>legacy_code at 
160 


Caused by: 
    Error using ==> iAddSfunctionBlock at 183 
    Invalid MEX-file 'sfun_vectorRotation_b.mexglx': 
    /opt/matlab/bin/glnx86/../../sys/os/glnx86/libstdc++.so.6: version 
    `GLIBCXX_3.4.11' not found (required by sfun_vectorRotation_b.mexglx). 
    Error using ==> iAddSfunctionBlock at 183 
    Error while obtaining sizes from MEX S-function 'sfun_vectorRotation_b' in 
    'untitled1/sfun_vectorRotation_b'. MATLAB error message: 
    Invalid MEX-file 'sfun_vectorRotation_b.mexglx': 
    /opt/matlab/bin/glnx86/../../sys/os/glnx86/libstdc++.so.6: version 
    `GLIBCXX_3.4.11' not found (required by sfun_vectorRotation_b.mexglx). 

正直私はこの時点で少し失われています。私はg ++コンパイラのダウングレードが十分であるか、他に何かをしなければならないかどうかはわかりません。この問題の解決策はありますか?

私はUbuntuの10.10 OS、およびg ++バージョンでのMatlab 2009bは使用しています:

g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 

事前にどうもありがとう

ミケル

答えて

2

を最後に、私は問題を自分で解決することができます。サポートされているバージョンのgcc(4.1と4.2の間の誰でも実行できます)をダウンロードしてインストールしてください(./configuremakemake install)。私の場合、gcc-4.2を試しましたが、うまく動作します。

ありがとうございました!

ミッケル