Comment j'ai résolu l'erreur Matlab/Simulink S-Function : mexa64: GLIBCXX_3.4.xx not found
Problème
En essayant d’exécuter un modèle Simulink qui utilise une S-Function compilée avec mex, j’ai rencontré l’erreur suivante :
Invalid MEX-file '/home/user/mysfunction.mexa64': /opt/matlab/R2025a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/user/mysfunction.mexa64)Solution
Cette erreur se produit car la version de libstdc++.so.6 que Matlab utilise (/opt/matlab/R2025a/sys/os/glnxa64/libstdc++.so.6 dans ce cas) est plus ancienne que celle requise par la S-Function compilée (qui est utilisée lors de la compilation avec mex).
Dans mon cas, Matlab est livré avec GLIBCXX_3.4.30 mais ma libstdc++ système est GLIBCXX_3.4.32. C’est une incompatibilité très mineure, la bibliothèque système est légèrement plus récente (Ubuntu 24.04 LTS, 2025-08-06).
J’ai résolu ce problème en supprimant le fichier libstdc++.so.6 dans le répertoire Matlab car il fonctionne tout aussi bien avec le fichier libstdc++.so.6 du système.
Avant d’essayer cette solution, assurez-vous d’avoir une sauvegarde du fichier original.
rm /opt/matlab/R2025a/sys/os/glnxa64/libstdc++.so.*Après cela, vous devez redémarrer Matlab et également recompiler votre S-Function avec mex. L’erreur devrait avoir été résolue après cela.