我如何解决 Matlab/Simulink S-Function 错误:mexa64: GLIBCXX_3.4.xx not found

问题

当尝试运行使用 mex 编译的 S-Function 的 Simulink 模型时,我遇到了以下错误:

解决方案

此错误发生的原因是 Matlab 使用的 libstdc++.so.6 版本(本例中为 /opt/matlab/R2025a/sys/os/glnxa64/libstdc++.so.6)比编译后的 S-Function 所需的版本(在用 mex 编译时使用)更旧。

在我的情况下,Matlab 自带 GLIBCXX_3.4.30,但我的系统 libstdc++ 是 GLIBCXX_3.4.32。这是一个非常小的版本不匹配,系统库稍微新一点(Ubuntu 24.04 LTS,2025-08-06)。

我通过删除 Matlab 目录中的 libstdc++.so.6 文件解决了这个问题,因为它使用系统的 libstdc++.so.6 文件也能正常工作。

在尝试此解决方案之前,请确保你已备份原始文件。

之后,你需要重启 Matlab 并使用 mex 重新编译你的 S-Function。此后错误应该已经解决。


Check out similar posts by category: MATLAB/Simulink