Simulink S-Function с кодом C ++ компилируется, но выдает ошибку при генерации / настройке - PullRequest
2 голосов
/ 24 ноября 2010

У меня есть подпрограмма C ++, которую я хотел бы упаковать в S-функцию Simulink.Эта подпрограмма C ++ вызывает другие подпрограммы, которые находятся в нескольких других файлах C ++.

Мне удалось бы скомпилировать все (т.е. сгенерирован файл mexglx), используя инструмент legacy_code.Однако выдается следующее предупреждение:

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-функции с помощью команды:

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 ++ или мне придется делать какие-то другие вещи.У вас есть возможное решение этой проблемы?

Я использую Matlab 2009b в ОС Ubuntu 10.10, а версия g ++:

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

Заранее большое спасибо

Микель

1 Ответ

2 голосов
/ 24 ноября 2010

Наконец-то я смог решить проблему сам. Просто скачайте и установите (через ./configure, make и make install) поддерживаемую версию gcc (подойдет любой пользователь между 4.1 и 4.2). В моем случае я попробовал gcc-4.2, и он отлично работает.

В любом случае, спасибо!

Микель

...