|
|
[Coder] Wie binde ich vorhandene MEX-files ein? |
|
Ewald113 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.09.2012, 09:40
Titel: [Coder] Wie binde ich vorhandene MEX-files ein?
|
|
|
|
|
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.
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:
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
|
|
Beiträge: 320
|
|
|
|
Anmeldedatum: 14.12.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
|
|
|
|
|
Verfasst am: 16.08.2014, 15:20
Titel:
|
|
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
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|