WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

MCR extern starten.

 

dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2008, 14:55     Titel: MCR extern starten.
  Antworten mit Zitat      
Hallo erstmal,

ich habe bereits Forum, Newsgroup und mathworks durchsucht - ohne zufriedenstellendes Ergebnis. Sad

Zu meinem Problem:

Ich habe eine Anwendung, die größtenteils in C geschrieben ist. Zur Anzeige der Daten verwende ich eine standalone Matlab Applikation, die ich aus C aufrufe (ist in Matlab erstellt worden und mit dem 4.7 Compiler über mcc kompiliert worden). Soweit so gut, funktioniert alles auch wunderbar.

Das Problem ist allerdings dass es relativ lange dauert, bis die Matlab Component Runtime geladen ist. Und da ich unterschiedliche Daten plotten will, muss ich natürlich jedesmal die standalone Applikation neu aufrufen (somit wird natürlich die MCR auch neu geladen).

Gibt es eine Möglichkeit, das MCR extern zu laden? Ich habe mir das so vorgestellt dass das MCR zum Programmstart einmalig geladen wird und dass die Zeit, die die standalone Applikation dann zum Ausführen benötigt, drastisch reduziert wird.

MfG
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 22.06.2008, 19:34     Titel:
  Antworten mit Zitat      
Zitat:
Gibt es eine Möglichkeit, das MCR extern zu laden?

nein - leider geht das nicht.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 25.06.2008, 16:54     Titel:
  Antworten mit Zitat      
Hallo,

die Antwort ist nicht komplett nein: der MATLAB compiler erlaubt auch die Erzeugung einer C-Shared-Library. Diese kann tatsächlich bei Programmstart initialisiert werden und vor Ende der Applikation wieder terminiert werden. Zwischendurch kann der Code aufgerufen werden (ohne Startup-Overhead).
In der Hilfe findet man das unter MATLAB Compiler->Libraries->C Shared Library Target. Allerdings ist dafür etwas Programmieraufwand (Konvertierung der Daten in die MATLAB Datenstruktur mwArray nötig).

Viele Grüße,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2008, 16:40     Titel:
  Antworten mit Zitat      
Hallo,

so, habe jetzt endlich die Zeit gefunden, das alles durchzuspielen Smile
Und - es funktioniert... naja, zumindest einigermaßen.

Ist eigentlich gar nicht so schwierig - wird ja alles in der Hilfe erklärt. Einfach eine c-shared-lib bauen mit
Code:
mcc -B csharedlib:libfoo foo1.m foo2.m ... fooN.m
. Danach das gewünschte C-File mit der Lib verlinken über mbuild. Das C-File muss natürlich mit einigen proprietären Funktionen ergänzt werden. Die Matlab-Funktionen können mit mlfFoo() aufgerufen werden.

Was ich noch nicht geschafft habe ist meiner Funktion variable Argumente zu übergeben (argv bzw. varargin). Als ich die Standalone-Variante gebaut habe, ging das eigentlich ganz einfach weil es direkt umgesetzt wurde. Nun stürzt meine Funktion ab (und liefert beim Kompilieren schon Warnings) wenn ich ihr argv als Argumente übergebe. Naja, wär ja auch zu schön gewesen ^^

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 09.07.2008, 12:55     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht könntest Du uns die entsprechenden Zeilen, die Du probiert hast, zeigen, dann könnten wir ggf. helfen...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.