2010-11-24 3 views
2

Ich habe eine C++ - Routine, die ich in einer Simulink S-Funktion packen möchte. Diese C++ - Routinen rufen andere Routinen auf, die sich in mehreren anderen C++ - Dateien befinden.Simulink S-Funktion mit C++ - Code kompiliert aber gibt einen Fehler bei der Generierung/Einrichtung

Ich könnte schaffen, alles kompiliert zu haben (d. H. Die mexglx Datei wird generiert) mit dem Legacy_code Werkzeug. Jedoch wird die folgende Warnung ausgegeben:

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 

Das Problem entsteht, wenn ich versuche, den S-Function-Block zu erzeugen, indem Sie den Befehl ausgeben:

legacy_code('slblock_generate', def); 

An dieser Stelle zu erwähnen, die folgenden Fehler die GLIBCXX Version wird ausgelöst:

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

Ehrlich gesagt bin ich an diesem Punkt etwas verloren. Ich weiß nicht, ob das Herunterstufen des g ++ - Compilators ausreichen würde oder ob ich noch andere Dinge tun müsste. Haben Sie eine mögliche Lösung für dieses Problem?

Ich bin mit Matlab 2009b in einer Ubuntu 10.10 OS und die g ++ Version ist:

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

Vielen Dank im Voraus

Miquel

Antwort

2

Endlich konnte ich das Problem selbst lösen. Einfach herunterladen und installieren (über ./configure, make und make install) eine unterstützte Version von gcc (jeder zwischen 4.1 und 4.2 wird tun). In meinem Fall habe ich gcc-4.2 versucht und es funktioniert gut.

Danke trotzdem!

Miquel

Verwandte Themen