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

Error bei MEX File Erstellung

 

AGE
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 24.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2012, 14:32     Titel: Error bei MEX File Erstellung
  Antworten mit Zitat      
Code:


lcc preprocessor warning: .\datei1.h:30 .\OmsUmxMC.h:18 .\datei1.h:10 test1.c:8 No newline at end of file
Error test1.c: .\OmsUmxMC.h: 124 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 125 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 126 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 129 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 130 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 131 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 132 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 133 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 134 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 137 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 140 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 143 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 145 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 146 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 147 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 148 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 149 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 150 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 151 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 152 unrecognized declaration
Error test1.c: .\OmsUmxMC.h: 153 too many errors

C:\PROGRA~1\MATLAB\R2010A\BIN\MEX.PL: Error: Compile of 'test1.c' failed.

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


so zu meinem Problem:

ich möchte in Matlab diese mexfile ausführen
im mex file selbst inst diese mex.h drinne und diese void mexFunction
in der void selbst wird nur auf eine andere Main zugegriffen und das programm wird durchlaufen.

In Visual Studio gibts keine probleme : keine fehler kein warning

In matlab kommt die oben gezeigte fehlermeldungnatürlich habe ich im mex setupo den compiler gewählt :
Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2010a\sys\lcc

ich habe versucht die datei die angeblich fehlt über [/color]

Code:
loadlibrary('OmsUmxMC.lib')
callib('OmsUmxMC')


zu laden funktioniert auch nicht
Fehlermeldung:

Warning: Message from C preprocessor:
lcc preprocessor warning: D:\...\datei1.h:30 D:\...\OmsUmxMC.h:18 No newline at end of file

> In loadlibrary at 374
Warning: Warnings messages were produced while parsing. Check the functions you
intend to use for correctness. Warning text can be viewed using:
[notfound,warnings]=loadlibrary(...)
> In loadlibrary at 399
??? Error using ==> loadlibrary at 480
There was an error loading the library "D:\...\OmsUmxMC.lib"
D:\...UmxMC.lib ist keine zulässige Win32-Anwendung.



Caused by:
Error using ==> loaddefinedlibrary
D:\...\OmsUmxMC.lib ist keine zulässige Win32-Anwendung.



Kann mir jemande weiter helfen ich verzweifle noch daran
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.11.2012, 15:22     Titel: Re: Error bei MEX File Erstellung
  Antworten mit Zitat      
Hallo AGE,

Zitat:
test1.c:8 No newline at end of file
Error test1.c: .\OmsUmxMC.h: 124 unrecognized declaration
lcc preprocessor warning: D:\...\datei1.h:30 D:\...\OmsUmxMC.h:18 No newline at end of file

Also, ich finde diese Meldungen ziemlich klar. Ich empfehle zunächst mal an den File-Enden Newline Zeichen einzufügen (also einen Zeilenumbruch). Dann zeige uns noch den Inhalt der Zeile 124 im File OmsUmxMC.h. Sollten dort z.B. C++-Befehle stehen, wäre die Verwenden des C-Compilers LCC nicht sinnvoll. Wieso verwendest Du nicht MSVC, wenn Du ihn doch installiert hast?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
AGE
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 24.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2012, 15:47     Titel: problem mex
  Antworten mit Zitat      
hi
danke für die schnelle antwort

test1.c
Code:

#include "datei1.h"
extern main(long, long);
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
   mexPrintf("Hello, world!\n");
   main(200000,50000);
   return;
}
 


datei1
Code:

#include <stdio.h>
#include <windows.h>
#include "OmsUmxMC.h"
#include <stdlib.h>
#include <string.h>
#include "mex.h"
#include "matrix.h"

#ifndef DATEI1_H
#define DATEI1_H

//Einbinden der Prototypen
int links(char* );
int rechts(char* );
void reset();
int menue();
void auswahlundfahren(char* ,long ,long );
long int schrittwahl();
void Wunsch_SpeedSet(long );
void Max_SpeedSet(long );

#endif
 


in DEMO1.C sind alle funktionen wie gesgat in C gibts kein fehler nur in Matlab

ich kann nur den compiler auswählen

Code:

>> mex -setup
Please choose your compiler for building external interface (MEX) files:
 
Would you like mex to locate installed compilers [y]/n? y
 
Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2010a\sys\lcc
 
[0] None
 
Compiler: 1
 
Please verify your choices:
 
Compiler: Lcc-win32 C 2.4.1
Location: C:\PROGRA~1\MATLAB\R2010a\sys\lcc
 
Are these correct [y]/n? y
 
Trying to update options file: D:\Documents and Settings\212309943\Application Data\MathWorks\MATLAB\R2010a\mexopts.bat
From template:              C:\PROGRA~1\MATLAB\R2010a\bin\win32\mexopts\lccopts.bat
 
Done . . .
 
**************************************************************************
  Warning: The MATLAB C and Fortran API has changed to support MATLAB
           variables with more than 2^32-1 elements.  In the near future
           you will be required to update your code to utilize the new
           API. You can find more information about this at:
           http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9
           Building with the -largeArrayDims option enables the new API.
**************************************************************************
 
Private Nachricht senden Benutzer-Profile anzeigen
 
AGE
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 24.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2012, 15:52     Titel: problem mex
  Antworten mit Zitat      
upps zeile
124 problem und folgende
Code:
DLLIMPORT  HANDLE _stdcall GetOmsUmxHandle(long, long);


deswegen hatte ich in matlab probiert
Code:
loadlibrary('OmsUmxMC.lib')
callib('OmsUmxMC')
 


gibt auch eine fehlermeldung aus
wie schon gecshrieben
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.11.2012, 10:23     Titel: Re: problem mex
  Antworten mit Zitat      
Hallo AGE,
Zitat:
... in C gibts kein fehler nur in Matlab

Es scheint hier ein grundsätzliches Missverständnis zu geben: Die Compilierung findet im C-Compiler statt. Du hast den LCC ausgewählt, der mit Matlab mitgeliefert wird. Dieser ist alt, wobei "veraltet" besser passen würde. Die Fehler haben also nichts mit Matlab zu tun, sondern damit, dass der Compiler den Code nicht versteht. Mit "in C gibnt es keine Fehler" meinst Du wahrscheinlich, das ein moderner Compiler den Code übersetzen kann, oder? Dann beutze doch einen modernen Compiler. Die MSVC-compiler kann man aus den frei verfügbaren SDKs installieren.

Probleme im Compiler lassen sich nicht beeinflussen, in dem man eine Library in Matlab lädt. Das sind ja zwei unterschiedliche Programme.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
AGE
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 24.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2012, 12:41     Titel:
  Antworten mit Zitat      
hallo,

also ich habe jetzt einen anderen compiler
Code:
>> mex -setup
Please choose your compiler for building external interface (MEX) files:
 
Would you like mex to locate installed compilers [y]/n? y
 
Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2010a\sys\lcc
[2] Microsoft Visual C++ 2008 SP1 in C:\Program Files\Microsoft Visual Studio 9.0
 
[0] None
 
Compiler: 2


beim erstellen der mex datei bekomm ich jetzt folgenden fehler
Code:
>> mex test1.c DEMO1.c
   Creating library D:\...\MEX_Q7~1\templib.exp
DEMO1.obj : error LNK2019: unresolved external symbol __imp__SendAndGetString@12 referenced in function _links
DEMO1.obj : error LNK2019: unresolved external symbol __imp__CloseOmsUmxHandle@4 referenced in function _links
DEMO1.obj : error LNK2019: unresolved external symbol __imp__GetStatusFlags@8 referenced in function _links
DEMO1.obj : error LNK2019: unresolved external symbol __imp__GlobalDoneEvent@4 referenced in function _links
DEMO1.obj : error LNK2019: unresolved external symbol __imp__SendString@8 referenced in function _links
DEMO1.obj : error LNK2019: unresolved external symbol __imp__SetOmsAxisVelocity@12 referenced in function _Max_SpeedSet
DEMO1.obj : error LNK2019: unresolved external symbol __imp__ClrStatusFlags@8 referenced in function _reset
DEMO1.obj : error LNK2019: unresolved external symbol __imp__GetOmsUmxHandle@8 referenced in function _reset
test1.mexw32 : fatal error LNK1120: 8 unresolved externals
 
  C:\PROGRA~1\MATLAB\R2010A\BIN\MEX.PL: Error: Link of 'test1.mexw32' failed.
 
??? Error using ==> mex at 222
Unable to complete successfully.


mir scheint es so als gibt es bei der DLLIMPORT probleme.
das DLLIMPORT wird in einem header behandelt die zugehörige *.lib liegt im gleichen ordner
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.11.2012, 16:40     Titel:
  Antworten mit Zitat      
Hallo

Zitat:
mir scheint es so als gibt es bei der DLLIMPORT probleme.
das DLLIMPORT wird in einem header behandelt die zugehörige *.lib liegt im
gleichen ordner


Dass muss dann den MEX auch mitteilen:

Code:

mex -v -g  ...
  -I. ...
   test1.c ...
   DEMO1.c    
 
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 - 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.