2

我有一个 C++ 例程,我想将它打包到 Simulink S-Function 中。此 C++ 例程调用其他几个 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 操作系统中使用 Matlab 2009b,g++ 版本为:

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

非常感谢提前

米克尔

4

1 回答 1

2

最后我可以自己解决问题。只需下载并安装(通过和./configure)受支持的 gcc 版本(4.1 和 4.2 之间的任何人都可以)。就我而言,我尝试了 gcc-4.2 并且效果很好。makemake install

不管怎么说,还是要谢谢你!

米克尔

于 2010-11-24T15:25:38.067 回答