[gelöst][XLib] Verwendung der XLib führt zu Fehlern beim Kompilieren
-
Hallo c-Community,
ich habe eine Frage zu der Verwendung von XLib. Also nur im Voraus, habe schonmal ein Fenster mit XLib erzeugt aber das nun auftretende Problem habe ich noch nicht beobachtet. Zuerst einmal verwende ich folgenden Quellcode:
CLASS_X11Window.h
#ifndef CLASSX11WINDOW #define CLASSX11WINDOW #include <X11/Xlib.h> #include <pthread.h> #include <stdlib.h> #include "../../Functions/header/FUNCTION_errmsg.h" #include "../../Functions/header/FUNCTION_memory.h" #include "../../Classes/header/CLASS_Application.h" #include "../../Classes/header/CLASS_Object.h" #include "../../Classes/header/CLASS_V4LDevice.h" #define X11WINDOW "X11Window" typedef struct { pClassObject Object; pClassV4LDevice V4LDevice; int X, Y, Width, Height, screen; Display* display; Window window; XEvent event; pthread_t X11WindowThread; }tClassX11Window, *pClassX11Window; /* * Konstruktor und Destruktor */ void X11WINDOW_Create(pClassX11Window* X11Window, int X, int Y, int Width, int Height, pClassV4LDevice V4LDevice, pClassApplication Application); void X11WINDOW_Free(pClassX11Window X11Window); /* * Methoden des X11Window */ void* X11WINDOW_ThreadFunction(void* argv); #endif
CLASS_X11Window.c
#include "../header/CLASS_X11Window.h" /* * Konstruktor und Destruktor */ void X11WINDOW_Create(pClassX11Window* X11Window, int X, int Y, int Width, int Height, pClassV4LDevice V4LDevice, pClassApplication Application) { (*X11Window) = mem_malloc(sizeof(tClassX11Window), X11WINDOW, "failed to allocate memory for x11 window", 9); OBJECT_Create(&(*X11Window)->Object, Application); OBJECT_Set_ClassName((*X11Window)->Object, X11WINDOW); (*X11Window)->V4LDevice = V4LDevice; (*X11Window)->X = X; (*X11Window)->Y = Y; (*X11Window)->Width = Width; (*X11Window)->Height = Height; if (NULL == ((*X11Window)->display = XOpenDisplay(NULL))) errmsg_exit(X11WINDOW, "failed to open x11 window", 17); (*X11Window)->window = XCreateSimpleWindow((*X11Window)->display, RootWindow((*X11Window)->display, (*X11Window)->screen), (*X11Window)->X, (*X11Window)->Y, (*X11Window)->Width, (*X11Window)->Height, 1, BlackPixel((*X11Window)->display, (*X11Window)->screen), WhitePixel((*X11Window)->display, (*X11Window)->screen)); XSelectInput((*X11Window)->display, (*X11Window)->window, ExposureMask | KeyPressMask); XMapWindow((*X11Window)->display, (*X11Window)->window); pthread_create(&(*X11Window)->X11WindowThread, NULL, X11WINDOW_ThreadFunction, (void*)(*X11Window)); } void X11WINDOW_Free(pClassX11Window X11Window) { if (X11Window != NULL) { if (X11Window->Object != NULL) OBJECT_Free(X11Window->Object); mem_free(X11Window); } } /* * Methoden des X11Window */ void* X11WINDOW_ThreadFunction(void* argv) { pClassX11Window X11Window = (pClassX11Window)argv; while (OBJECT_Get_AppStatus(X11Window->Object) < 3) { //nothing } pthread_exit(NULL); }
Wenn ich alles zusammen kompiliere, tritt folgender Fehler auf:
gcc -c -o obj/CLASS_X11Window.o ../Classes/src/CLASS_X11Window.c -ggdb -Wall -Werror -DVERSION=\"0.0.3\"
In file included from ../Classes/src/../header/CLASS_X11Window.h:9,
from ../Classes/src/CLASS_X11Window.c:1:
../Classes/src/../header/../../Classes/header/CLASS_Application.h:21: error: two or more data types in declaration specifiers
cc1: warnings being treated as errors
../Classes/src/../header/../../Classes/header/CLASS_Application.h:21: error: declaration does not declare anything
../Classes/src/../header/../../Classes/header/CLASS_Application.h:35: error: two or more data types in declaration specifiers
In file included from ../Classes/src/../header/CLASS_X11Window.h:10,
from ../Classes/src/CLASS_X11Window.c:1:
../Classes/src/../header/../../Classes/header/CLASS_Object.h:44: error: two or more data types in declaration specifiers
make: *** [obj/CLASS_X11Window.o] Fehler 1Wenn ich alle XLib-spezifischen Sachen aus dem Quellcode entferne, kompiliert das Programm ohne Fehler. Ich gehe davon aus, dass XLib fehlerfrei funktioniert (ist auf jeden Fall installiert und neuste Version). Wo habe ich da einen Fehler gemacht beim Programmieren?
Noch zur Ergänzung hier die Libraries die ich beim kompilieren mit gcc verwende:
LDFLAGS = -lX11 -lpthread -lv4l1 -lv4l2
Hoffe jemand kann mir helfen.
MfG
mirrowwinger
-
Da fast 24h vergangen sind seit meinem Beitrag und um auch darzustellen, dass es eine Lösung gibt, wähle ich mal die Möglichkeit auf meinen eigenen Post zu antworten.
Der Fehler ist gefunden und erklärt sich auch ein wenig aus der Kompiler-Meldung für den Fehler. Anscheinend gibt es in der xLib eine Variable mit dem Namen Status, welche ich auch in meiner Klasse Application verwende.
In file included from ../Classes/src/../header/CLASS_X11Window.h:9,
from ../Classes/src/CLASS_X11Window.c:1:
../Classes/src/../header/../../Classes/header/CLASS_Application.h:21: error: two or more data types in declaration specifiers
cc1: warnings being treated as errorsNachdem ich die Variable umbenannt habe, kompiliert mein Projekt wieder fehlerfrei.
MfG
mirrowwinger