2010-11-24 13 views
2

J'ai une routine C++ que je voudrais emballer dans une Simulink S-Function. Cette routine C++ appelle d'autres routines qui se trouvent dans plusieurs autres fichiers C++.Simulink S-Fonction avec le code C++ compile mais donne une erreur à la génération/mise en place

Je pouvais gérer que tout soit compilé (c'est-à-dire que le fichier mexglx soit généré) en utilisant l'outil legacy_code. Cependant, l'avertissement suivant est émis:

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 

Le problème se pose lorsque je tente de générer le bloc S-fonction en exécutant la commande:

legacy_code('slblock_generate', def); 

À ce stade, l'erreur suivante mentionnant la GLIBCXX version est posée:

??? 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). 

Honnêtement, je suis un peu perdu à ce stade. Je ne sais pas si dégrader le compilateur g ++ serait suffisant ou si je devais faire d'autres choses. Avez-vous une solution possible à ce problème?

Je Matlab 2009b dans une Ubuntu 10.10 OS, et g ++ version est:

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

Merci beaucoup à l'avance

Miquel

Répondre

2

Enfin, je pouvais résoudre le problème moi-même. Il suffit de télécharger et d'installer (via ./configure, make et make install) une version prise en charge de gcc (tout le monde entre 4.1 et 4.2 fera l'affaire). Dans mon cas, j'ai essayé gcc-4.2 et ça marche très bien.

Merci quand même!

Miquel

Questions connexes