Ich mache meine "Haupt" S-Funktion basierend auf der Matlab Vorlage mit mdlStart
mdlOutputs
, etc, die mit einigen Ansi C-Dateien kommuniziert, die ich hatte, und diese S-Funktion ist in Simulink verwendet. Ich kompilierte die Dateien korrekt mit mex und um zu debuggen, verwende ich Visual Studio 2015. Ich kann Haltepunkte setzen und verwenden, so dass alles einwandfrei funktioniert.Matlab crasht mit S-Funktion nach mdlOutputs
Das Problem ist, nach Abschluss der 'mdlOutputs' Funktion, wo alle Inhalte korrekt in Matlab gedruckt werden, geht das Debugging in einen Haltepunkt und es geht in 'simulink.c'. Danach ist der Debug gebrochen, dass "libmex.pdb" nicht gefunden werden kann.
Wenn ich das Simulink-Modell ohne Visual Studio in der Schleife ausführen, stürzt Matlab einfach ab und funktioniert nicht mehr.
Also, irgendeine Idee, wie man richtig überprüft, wo es mir einen Fehler gibt? Haben Sie auch eine Ahnung, warum der Prozess nach dem Verlassen von mdlOutputs
und vor der Eingabe von mdlTerminate
abstürzt? Was passiert zwischen diesen beiden Funktionen?
Ich benutze Windows 7, 64-Bit und Matlab 2012b (ich werde versuchen, es in 2015b auszuführen).
Diese Option garantiert, dass Ihre s-Funktion keine Ausnahmen auslöst, die zu langen Codesprüngen führen. Es ist möglich, dass diese Option ein anderes Problem maskiert, das den Absturz verursacht. Stellen Sie sicher, dass Sie keinen Speicher in mdlOutputs überschreiben. – Navan
Ja, Sie haben Recht. Die Sache ist, wie kann ich sicherstellen, dass keine Überschreibungen von Speicher passieren? In Matlab + Visual Studio ist es ziemlich schwierig –