MATLAB C++ Library - Aufruf von Funktion mit optionalen Parametern

  • Themenstarter Themenstarter Gelöschtes Mitglied 16444
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 16444

Guest
Moin HABO!

Ich habe hier ein etwas komplexeres MATLAB Skript, das es frei im Netz zum Download gibt und das ich gerne in meiner C++ Applikation nutzen würde. Also habe ich mir mit MATLAB eine Bibliothek erstellen lassen und versuche diese nun in mein Programm einzubinden. So weit so gut.

Nun gibt es in dem MATLAB Code allerdings eine Funktion, die zwar Parameter besitzt, die ich beim Aufruf allerdings nicht angeben darf.

Der Aufruf unter MATLAB, den ich erreichen will, sieht so aus:
Code:
H=sc(sparset,lparset(100),aparset);
Die Signatur der MATLAB-Funktion sparset so:
Code:
function spar=sparset(arg)
Und die Signatur der C++ Funktion, die mir MATLAB erzeugt so:
Code:
extern LIB_libsc_CPP_API void MW_CALL_CONV sparset(int nargout
                                                      , mwArray& spar
                                                      , const mwArray& arg);
Das Problem vor dem ich nun stehe ist, wie ich die Funktion aufrufen muss, damit es dem MATLAB Code entspricht. In der Funktion wird nämlich ein Fehler geschmissen, wenn length(arg) > 0 ist, was aber bei allen Varianten, die ich versucht habe der Fall zu sein scheint.

Z.B.:
Code:
mwArray spar;
sparset(1, spar, mwArray());
Ich habe leider keine brauchbare Doku gefunden, in der der ganze Umgang mit solchen generierten Libraries beschrieben wird, deswegen ist bisher alles trial&error mit Hilfe einiger funktionierender Beispiele gewesen :rolleyes:

Hat jemand schon mal intensiver mit von MATLAB generierten C/C++ Bibliotheken gearbeitet und kann mir hier (mit einem Link) weiterhelfen?
 
Wie hast du denn die Bibliothek erstellt? Ich hab mal ein Simulink-Modell mit Hilfe des Realtime-Workshop in C-Code übersetzen lassen. Leider gab es auch eine ganze Laufzeitumgebung dazu, was für das sehr leistungsschwache Embedded-System zu viel war.
 
Jap, die Runtime muss installiert sein, sonst läuft es nicht. Finde ich auch für eine Desktopanwendung etwas viel Zeugs, aber weil die Zeit drängt...

Erzeugt hab ich die lib mit:
Code:
mcc -W cpplib:mylib -T link:lib file1.m file2.m file3.m
 
Zurück
Oben