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

Matlab Coder - Implementierung in C++

 

lcalert
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2014, 11:50     Titel: Matlab Coder - Implementierung in C++
  Antworten mit Zitat      
Hallo,

zugegebenermaßen, ich habe eigentlich eher eine C++ Frage, als eine direkte Matlab Frage. Hoffe hier jedoch auf hilfreiche Hinweise, ist schwer dazu Informationen bei google zu finden. Dort werden immer nur C++ Probleme behandelt, nicht die Implementierung aus Matlab.

Ich habe ein Matlab Skript, welches als Input 3 Vektoren hat und als Output einen Vektor und ein Skalar liefert. (Das Skript berechnet die Parametrisierung nach der Bogenlänge anhand eines 3D Polygonzuges, das Skalar ist eine Errorrückmeldung).

Jetzt habe ich das mittels dem 'coder' in C++ übersetzt und in C++ implementiert.
Funktioniert für die Vektoren wunderbar, nur bei dem zusätzlichen Skalar kommt immer ein Fehler, weil ich auf geschützten Speicher zugreifen möchte.
Denn wenn ich die Errorrückmeldung in Matlab nicht in den Output packe, dann funktioniert das genau wie ich es haben will in C++. Also muss es da irgendwie haken, aber C++ seitig. In Matlab funktionierts alles bestens.

Meine Frage an die Matlab Gemeinschaft wäre jetzt, hat jemand schon Erfahrungen mit der Implementierung gemacht und vielleicht ein gutes Tutorial oder einen grundlegenden Tipp parat?
Oder weiß sogar jemand, wo der Fehler in meinem C++-Code liegt?

Achtung C++-Code!
[code]#include "stdafx.h"
#include <iostream>
#include "arcl3d.h"
#include "arcl3d_initialize.h"
#include "arcl3d_terminate.h"
#include "arcl3d_emxAPI.h"
#include "arcl3d_emxutil.h"

using namespace System;

int main( )
{
arcl3d_initialize();
double a[6] = {0, 1, 2, 3, 4, 5};
double b[6] = {0, 2, 4, 6, 8, 10};
double c[6] = {0, 1, 2, 3, 4, 5};

double d[6] = { };

double *ier;

emxArray_real_T *input1, *input2, *input3, *output;

input1 = emxCreateWrapper_real_T(a, 1, 6);
input2 = emxCreateWrapper_real_T(b, 1, 6);
input3 = emxCreateWrapper_real_T(c, 1, 6);
output = emxCreateWrapper_real_T(d, 1, 6);

arcl3d(input1, input2, input3, output, ier);

for(int i = 0; i < 6; ++i) {
std::cout << d[i] << "\n";
}
arcl3d_terminate();
return 0;
}[\code]

Fehler ist:
Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in ConsoleApplication.exe aufgetreten.
Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

Dieser tritt bei der Ausführung der Methode "arcl3d" auf.

Vielen Dank schonmal und viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen


lcalert
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2014, 13:06     Titel:
  Antworten mit Zitat      
Habs mittlerweile selbst gelöst.

Hab den Matlab Compiler genutzt, aufgerufen mittels Deploytool, dann auf Shard Library C++. Danach dann in C++ mit mxArrays gearbeitet, dazu findet man einiges in der Hilfe.
Nur so für Leute, die evtl. hiernach suchen und damit keiner mehr helfen braucht Wink !

Danke trotzdem!
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.