Contenu principal

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Erreurs du compilateur et de l’éditeur de liens

Lorsque vous générez une bibliothèque, une fonction MEX ou un exécutable avec MATLAB® Coder™, le générateur de code fait appel au compilateur C/C++ pour créer un artefact binaire. Des erreurs de compilation peuvent se produire pendant ce processus. Elles peuvent survenir à l’étape de compilation, de liaison ou à un autre moment. Vous pouvez consulter les erreurs et avertissements de compilation et de liaison dans l’onglet Build Logs du rapport de génération de code.

Les messages d’erreur et avertissements spécifiques qui s’affichent dépendent du compilateur et de la chaîne d’outils utilisés pour votre plateforme. Pour afficher le compilateur actuel ou en sélectionner un autre, saisissez ce qui suit à l’invite de commande :

mex -setup

Des erreurs de compilation peuvent se produire pour de nombreuses raisons. Pour les diagnostiquer et les corriger, vous devrez peut-être examiner les messages d’erreur répertoriés dans la documentation de votre compilateur. Voici quelques problèmes fréquents qui peuvent entraîner des erreurs de compilation lors de la génération de code.

Fonction main non spécifiée

Spécifiez une fonction main pour générer un exécutable C/C++. Si vous ne spécifiez aucune fonction main, une erreur de compilation se produit. La fonction main figure dans un fichier main séparé. Lorsque vous générez du code, MATLAB Coder crée un exemple de fichier main mais il ne l’utilise pas automatiquement pour la compilation. L’exemple de fonction main appelle le code généré avec des valeurs d’entrée fictives. Vous devez modifier l’exemple de fonction main ou créer la vôtre pour que les entrées et les sorties soient traitées de manière réaliste.

Vous pouvez spécifier le fichier main en tant que paramètre de ligne de commande dans la commande codegen ou dans l’application MATLAB Coder ou encore avec des paramètres de configuration. Pour plus d’informations et des exemples, consultez :

Si vous souhaitez que le générateur de code utilise automatiquement l’exemple de fichier main généré pour créer un exécutable qui servira aux tests, vous pouvez définir la propriété GenerateExampleMain de l’objet de configuration à 'GenerateCodeAndCompile'. Consultez la rubrique Incorporate Generated Code Using an Example Main Function.

Fichiers de code externes non spécifiés

Si votre code utilise des fonctions C externes dans coder.ceval, vous devez spécifier les fichiers externes qui contiennent ces fonctions. Sinon, des erreurs de compilation peuvent se produire. Vous pouvez spécifier ces fichiers en tant que paramètres de ligne de commande dans la commande codegen ou dans l’application MATLAB Coder ou encore avec des paramètres de configuration. Pour plus d’informations et des exemples, consultez :

Erreurs dues au code externe

Lorsque vous introduisez du code externe dans le processus de compilation, ce code peut injecter ses propres erreurs. Il existe plusieurs façons d’introduire du code externe :

Cette liste n’est pas exhaustive. Pour traiter les erreurs dues à ces méthodes, vous devez examiner et résoudre les problèmes du code externe ou dissocier celui-ci du code MATLAB.

Erreurs dues à la limite de longueur du chemin d’accès sous Windows

Lors de la génération de code C/C++ sur la plateforme Microsoft® Windows®, des erreurs peuvent se produire quand la longueur du nom du fichier et de son chemin d’accès dépasse la limite maximale autorisée par Windows. Dans ce cas, le compilateur ne trouve pas les fichiers ou répertoires requis. Pour résoudre ce problème, essayez l’une des solutions suivantes :

  • Raccourcissez le chemin d’accès au fichier en rapprochant le dossier du projet du répertoire racine. Sur la plateforme Windows, le répertoire racine est indiqué par un antislash (\).

  • Utilisez la commande Windows subst pour créer un lecteur virtuel mappé directement sur le dossier du projet. Par exemple, si le chemin d’accès au dossier du projet est C:\Users\user1\OneDrive - MyBuisness\Documents\Projects\My MATLAB Project, mappez directement le lecteur virtuel Z: sur ce dossier en saisissant la commande suivante à l’invite de commande Windows :

    subst z: C:\Users\user1\OneDrive - MyBuisness\Documents\Projects\My MATLAB Project
    Après avoir exécuté cette commande, vous pourrez accéder au dossier My MATLAB Project en saisissant Z:. Pour plus d’informations, consultez la documentation Microsoft sur subst.

  • Sur les plateformes Windows 10 version 1607 et ultérieures, activez le support des chemins d’accès longs. Consultez la documentation Microsoft sur la limitation de longueur maximale du chemin.

Erreurs dues à une version de compilateur C/C++ obsolète sous Linux

Si vous exécutez MATLAB sur une plateforme Linux® et que votre compilateur GCC est beaucoup plus ancien que votre instance MATLAB, la génération de code peut échouer pour certaines fonctions de toolbox MathWorks® qui utilisent des bibliothèques précompilées. Les fonctions de toolbox qui utilisent des bibliothèques précompilées sont notamment (mais pas seulement) celles de traitement d’images comme imfilter (Image Processing Toolbox), bwpack (Image Processing Toolbox) et regionprops (Image Processing Toolbox).

Pour résoudre ce problème, actualisez vos bibliothèques glibc et/ou libstdc++ en mettant à jour le compilateur GCC de votre plateforme Linux.

Débordement de stack run-time

Si votre compilateur C signale un débordement de stack run-time, définissez le paramètre d’utilisation maximale de la stack Stack usage max à une valeur inférieure à la taille de stack disponible.

Voir aussi

Rubriques

Sites web externes