Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

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

Diskussion: MATLAB C++ Library - Aufruf von Funktion mit optionalen Parametern im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Moin HABO! Ich habe hier ein etwas komplexeres MATLAB Skript, das es frei im Netz zum Download gibt und ...

Antwort
Alt 06.06.11, 19:53   #1 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard MATLAB C++ Library - Aufruf von Funktion mit optionalen Parametern

Anzeige

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

Hat jemand schon mal intensiver mit von MATLAB generierten C/C++ Bibliotheken gearbeitet und kann mir hier (mit einem Link) weiterhelfen?
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 06.06.11, 21:23   #2 (permalink)
 
Registriert seit: 27.02.07
mucki Leistung: Z3
Likes: 2
Standard

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.
mucki ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 06.06.11, 21:32   #3 (permalink)
Themenstarter
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

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
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » MATLAB C++ Library - Aufruf von Funktion mit optionalen Parametern
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61