Hallo,
ich habe hier eine DLL, die ich über mex-Files an Matlab anbinde.
Wenn ich nun die DLL-Funktionen der Reihe nach in Matlab eintippe, dann funktioniert alles wunderbar.
Sobald ich aber in einer Schleife mehrere Funktionsaufrufe schnell hintereinander ausführe, dann stürzt Matlab ab.
Wenn ich dann allerdings die Funktionsaufrufe (innerhalb der Schleife) mit einer pause(0.01)-Funktion ergänze, dann funktioniert wieder alles.
Ich habe jetzt bei verschiedenen Threads hier im Forum gesehen, das wohl des öfteren mit der pause()-Funktion im Zusammenhang mit DLL-Aufrufen gearbeitet wird. Und ich frage mich, was steckt dahinter?
Hat das etwas mit der Speicherverwaltung zu tun?
Die DLL ist multi-threaded, Matlab nicht. Liegt da das Problem?
Die DLL nutzt die CDECL Aufrufkonvention. Somit kümmert sich Matlab um den gemeinsamen Stack. Hängt es damit zusammen?
Warum funktioniert das Ganze mit einer Pause von wenigen Millisekunden?
Die DLL funktioniert im Übrigen fehlerfrei mit C++ und C#.
Gruß Pit
↧