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

[Coder] Wie binde ich vorhandene MEX-files ein?

 

Ewald113

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2012, 09:40     Titel: [Coder] Wie binde ich vorhandene MEX-files ein?
  Antworten mit Zitat      
Hallo. Ich bin dabei eine eigene Toolbox zu programmieren.
Sie dient dazu Matlab mit einer Steuerung zu verbinden.

Die Schnittstellt wurde in C++ realisiert und kommplet in Mex-Files gewandelt um die Kapselung zu gewährleisten.
Es wurde also für jede Funktion der Api eine Shadowfunktion.m und Mex-Funktion erstellt.

Code:
function [connection] = Connect(ipAddress)
connection = ClassConnection;
connection.connection = ConnectInternal(IP);


Die Klasse wird angelegt, um beim vernichten des Elements "connection" mittels Destruktor die Verbindung zu trennen.
Wobei ConnectinInternal das Mex-File darstellt und die eigentliche Verbindung herstellt.
Mit dem Aufruf:
Code:
handel = Connect(IP);
funktioniert diese Prozedur einwandfrei.
Doch will ich diese Funktion in eine höhere Ebene einbinden und daraus C-coder erzeugen, kommt die Meldung:
>> coder -build RealtimeTest.prj
??? Only MATLAB files are supported for code generation. Unsupported file extension 'mexw32' for ... ConnectInternal.mexw32'


Binde ich coder.extrinsic('Connect'); ein, wird die Funktion beim Kompilieren übergangen und
binde ich als Aufruf con=coder.ceval('mlpiApiConnect',target) ein erscheint als Fehler: >> coder -build RealtimeTest.prj
??? Cannot assign 'con' from 'coder.ceval' because the type and size of 'con' are not known. To fix, preinitialize 'con'.


Kann mir jemand weiterhelfen?
Wie binde ich meine Mex-Funktionen in höhere Instansen ein und mach diese Kompilierungsfähig?


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 16.08.2014, 15:20     Titel:
  Antworten mit Zitat      
Besser spät als nie.
Du musst den Output preallokieren. Also z.B. con = double(0); wenn der output der Funktion ein double Wert ist, oder con = zeros(10,10,'double'); wenn der output eine 10x10 Matrix ist, etc.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
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.