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

C++ mit Matlab aufrufen.

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2009, 14:55     Titel: C++ mit Matlab aufrufen.
  Antworten mit Zitat      
Hallo Leute,
ich versuche seit Tagen schon ein C++ Quellcode mit Matlab aufzurufen und bis jetzt hat es noch nicht geklappt.Ich habe gelesen dass es nur mit der Benutzung einer mex-file geht.Ich bekomme aber diese Fehlermeldung in Matlab:

Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.

C:\DOKUME~1\LOKALE~1\Temp\mex_slAItV\lauflicht.obj
LINK : error LNK2001: Nicht aufgelöstes externes Symbol "mexFunction".
C:\DOKUME~1\LOKALE~1\Temp\mex_slAItV\templib.x : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

C:\PROGRA~1\MATLAB7.6\R2008A\BIN\MEX.PL: Error: Link of 'lauflicht.mexw32' failed.

??? Error using ==> mex at 207
Unable to complete successfully.


Laut Fehlermeldung fehlt bei mir eine mexFunction.Ich habe mich darüber informiert und weiß jetzt dass Matlab diese Funktion braucht um die MEX-File zu laden.Ich weiß aber nicht wie ich diese Funktion nutzen soll da ich ein C++ Programm zur Steuerung eines Microcontrollers schon programmiert habe.

Code:


// Hauptprogramm
#include "CUSB_LEDZeile.h"      
int Schleife=5;         // Anzahl der Schleifen
int main (void)
{
   CUSB_LEDZeile Lauflicht;
   if(true == Lauflicht.oeffne())
   {  
      Lauflicht.pinueberwachen();
      /*do
      {
         Lauflicht.pinueberwachen();
      }
      while(false);
      */
     
         unsigned char cWert=0x01;
         bool ret=true;
         while(cWert != 0x00 && ret==true)
         {
            ret= Lauflicht.sendeByte(~cWert);
            Sleep(300);
            cWert <<= 1;
         }
         if(ret==false)
            Lauflicht.zeigeStatus();
         Lauflicht.schliesse();
   }
   else
      Lauflicht.zeigeStatus();
     
// Programm beendet erst, wenn Benutzer eine Taste drückt
   
   if (Schleife > 1)
   {
      Schleife--;
      return main();
   }
   else
   {  
      system("pause");
      return EXIT_SUCCESS;
   }
}
 

Der Code lässt LED leuchten wenn eine Taste gedrückt ist.
An dieser Stelle weiß ich nicht wie ich diese mexFunction einfügen soll.
Kann mir bitte jemand helfen?


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 26.10.2009, 15:19     Titel:
  Antworten mit Zitat      
Hallo,

das Programm ist ein eigenständiges C-Programm, keine MEX-Funktion. Anstelle der main muss der mex-Function Kopf verwendet werden, also
Code:
void mexFunction(int nlhs, mxArray* plhs[], int prhs, const mxArray* prhs[])


Außerdem muss die Header-Datei eingebunden werden:

Code:
#include "mex.h"


Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2009, 19:44     Titel:
  Antworten mit Zitat      
Hallo,
das stimmt,das war ein reines C++ Programm und jetzt habe ich die mexFunction eingefügt und der main rausgenommen.
Mein Problem ist jetzt mit den Eingabeparameter und die Rückwerte der mexFunction.Wie vorher erklärt, dieses Programm soll über einen Controller (IOWarrior40) das Lauflicht starten.Das heißt ich brauche keinen Eingabeparameter oder Rückwerte.Kann ich die Funktion mexFunction einfach defieren ohne die Parameter zu initialisieren?
 
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 - 2025 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.