Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Input.h undefined reference

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.03.2007
    Beiträge
    5

    Input.h undefined reference

    Hi.
    Ich habe folgendes Problem. Ich versuche der Maus ein Event zu übermitteln das sie den Zeiger an eine bestimmte position setzt. Um das zu realisieren hab ich ein programm in c entworfen:

    Code:
    ...
    #include <linux/input.h>
    ...
    int main(void)
    {
    .....
    	input_report_abs(dev, ABS_X, x);
    	input_report_abs(dev, ABS_Y, y);
    .....
    }
    Nun bekomme ich folgende Fehlermeldungen:

    Code:
    Kompilieren der Datei test.c (gcc)
    Linken der Datei test (gcc)
    test.o: In function `main':
    undefined reference to `input_report_abs'
    undefined reference to `input_report_abs'
    collect2: ld returned 1 exit status
    Die Funktionen sind in der Header soweit aufgelistet. Die Konstanten ABS_X und Y werden auch über die Header gefunden. Meine Frage ist wieso er nicht die Funktionen findet. Wie kann ich die Funktionen endlich nutzen? Oder gibt es da alternativ Funktionen ? Danke für die Hilfe.

  2. #2
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Ich schätze du musst noch gegen irgendeine lib linken, wenn der Linker schreit. Gegen welche weiß ich auch net.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.03.2007
    Beiträge
    5
    Das hatte ich mir auch schon fast gedacht. aber da hört mein wissen auch auf welche das sein könnte.

  4. #4
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Hi,

    da du die Funktion über einen Kernel Header (weil im Unterverzeichnis linux/) benutzt, gehe ich stark davon aus, dass du versuchst mit einem Programm für den User Space eine Funktion im Kernel zu rufen.
    Direkte Aufrufe von Kernelfunktionen aus normalen User Space Programmen sind nicht möglich. Dies geht nur aus Kernelmodulen.
    Deshalb gibt es auch keine Lib, in der die Funktion zu finden ist.
    Du musst die Maus über die Gerätedateien /dev/input/mice usw. mit read und write ansprechen.

    Gruß

    almoeli

  5. #5
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von almoeli Beitrag anzeigen
    Du musst die Maus über die Gerätedateien /dev/input/mice usw. mit read und write ansprechen.
    Das geht aber nur als root ...

    Stattdessen kann man z.B. die Xlib verwenden:
    Code:
    #include <X11/Xlib.h>
    ...
    Display *display = XOpenDisplay(NULL);
    Window window = XDefaultRootWindow(display);
    XWarpPointer(display, None, window, 0, 0, 0, 0, x, y);
    XFlush(display);
    XCloseDisplay(display);
    Das ganze natürlich noch erweitern um eine Prüfung aller Funktionsrückgabewerte auf Fehler.
    Kompilieren mit Parameter -lX11

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •