Fehler nach Portierung von MSVS zu GCC
-
Hey,
sorry für die Betreffzeile, leider spuckt mir der GCC compiler keine richtige Fehlermeldung aus. Ich habe ein Programm, was zuvor mit Microsoft Visual Studio 6 entwickelt worden ist. Ich probiere es gerade zu GCC zu portieren und bekomme einen seltene Fehlermeldung:error = LCOM_MasterSetOption(LCOM_O_Synchr, 300);Fehlermeldung:
to `LCOM_MasterSetOption'Es ist eine externe Funktion, die in lcmaster.h deklariert wird:
typedef enum{ LCOM_O_IBuffered=1, LCOM_O_INoBuffered=2, LCOM_O_OBuffered=3, LCOM_O_ONoBuffered=4, LCOM_O_Asynchr=5, LCOM_O_Synchr=6 }LCOM_OPTIONS; EXPORT LCOM_RES LCOM_MasterSetOption(LCOM_OPTIONS Options,int Arg);Die Datei lcmaster.h wird in dem header File importiert, wo ich den Aufruf zu LCOM_MasterSetOption mache.
Danke für die Hilfe.
Gruß Konstantin
-
vielen dank für die überaus inkomplette compilermeldung
daraus lässt sich der überaus inkomplette schluss ziehen das du was falsch gemacht hast
-
Tut mir leid - mehr gibt der Compiler NICHT her. Ich will nicht frech werden, aber das ist der Grund warum ich frage - ich kann mit der Meldung nichts anfangen.
Danke!
-
Vielleicht ist irgendwo in den Weiten der GCC-Libraries ein LCOM oder so ein Makro definiert? Makros sind bei sowas meistens schuld, wenn die Fehlermeldung einem spanisch und unerklärlich vorkommt. Mußt du mal schauen.
Aber ich schätz mal, es ist EXPORT oder so schuld. Was sich dahinter verbirgt kennt der gcc anscheinend nicht mußt du in einem #ifdef-Statemant MSVC-exclusiv machen.
#ifdef _MSVC_VER EXPORT LCOM_RES LCOM_MasterSetOption(LCOM_OPTIONS Options,int Arg); #elif LCOM_RES LCOM_MasterSetOption(LCOM_OPTIONS Options,int Arg); #endifOder so ähnlich... Makros sind halt evil.

-
Hast du das tatsächlich aus der Kommandozeile heraus kompiliert?! Wenn nicht, dann tu das mal und gib die Fehlermeldung, die dann kommt.
-
Hey,
es ist etwas komplizierter. Mein Programm benutzt FLTK sowie OpenGL. Ich habe an die 50 Klassen und lasse mir daher das Makefile etc. von Eclipse (CDT Plugin mit MINGW)erstellen.Sorry, habe mir wohl zu sehr auf Eclipse und die Problems View verlassen. Bei 400 Warnung wurde mir das etwas unübersichtlich - habe die Warnungen mal ausgeblendet. Also die console gibt folgendes her:
g++ -DWIN32 -IC:\Dokumente und Einstellungen\konbs\Desktop\workspace\LIMSUI2\include -O0 -g3 -w -mwindows -c -fmessage-length=100 -osrc\limsmain.o ..\src\limsmain.cppCompiliert wird wohl anscheinend, das Problem tritt dann beim Linken auf:
C:/Dokumente und Einstellungen/konbs/Desktop/workspace/LIMSUI2/Debug/../src/limsmain.cpp:2602: undefined reference to `LCOM_MasterSetOption(LCOM_OPTIONS, int)'Beim Linker habe ich nur den LIB Order, der die *.a Dateien für FLTK enthält, eingebunden. Zum Testen habe ich mal die include anweisung für die lcmaster.h Datei auskommentiert und es tritt eine "undeclared" Meldung auf. Daher denke ich mal, dass es der Linker ist ... habe ich etwas vergessen einzubinden?
Danke für die super Hilfe!
-
kon schrieb:
Bei 400 Warnung wurde mir das etwas unübersichtlich
bei 400 warnungen würde ich etwas misstrauisch werden.kon schrieb:
habe ich etwas vergessen einzubinden?
vermutlich...
-
Hey,
der include Ordner, der meine lcmaster.h und lcmaster.c enthält, wurde wohl nicht mit compiliert und somit auch nicht mit gelinkt. Haben den Ordner in den src (source) verschoben und jetzt lässt sich auch beim Aufruf des Linkers (src\limssl\lcmaster.o) finden.Leider erhalte ich weiterhin die Meldung:
undefined reference to `LCOM_MasterSetOption(LCOM_OPTIONS, int)'Mein Aufruf sieht so aus:
error = LCOM_MasterSetOption(LCOM_O_Synchr, 300);Kann er irgendwas mit dem Namespace zu tun haben? Mein Programm ist in C++ geschrieben wobei die Dateien lsmaster.h und lcmaster.c in C sind.
Danke für die super Unterstützung!
-
Mach mal ein
extern C { #include "lcmaster.h" }Hat mir bei einem änlichen Problem mit undefined references die in C geschrieben wurden geholfen...
Hat glaub ich irgendwas mit der Funktionssignatur zu tun...

-
Thanks, this solved my problem. Now, I just have to care about the 400 warnings
