Fehler beim kompilieren mit Wiimote-lib
-
Hallo,
ich möchte erstmal einfach die x,y und z Werte der Wiimote auslesen. Ich habe die lib "libcwiimote" (0.4) heruntergeldaden und installiert. Nur bekomme ich nun beim kompilieren folgende Ausgabe:Linking CXX executable wiimote CMakeFiles/wiimote.dir/main.cpp.o: In function `main': main.cpp:(.text+0x2b): undefined reference to `wiimote_connect' main.cpp:(.text+0x45): undefined reference to `wiimote_update' main.cpp:(.text+0x5d): undefined reference to `wiimote_disconnect' collect2: ld returned 1 exit status make[2]: *** [wiimote] Fehler 1 make[1]: *** [CMakeFiles/wiimote.dir/all] Fehler 2 make: *** [all] Fehler 2Der Code ist folgender:
#include <stdio.h> #include <libcwiimote/wiimote_api.h> int main() { wiimote_t wi; wiimote_connect(&wi, "00:1F:32:8F:E7:71"); wi.mode.acc = 1; // enable accelerometer while (wiimote_is_open(&wi)) { wiimote_update(&wi); // synchronize with wiimote if (wi.keys.home) { // check if home key is pressed wiimote_disconnect(&wi); } printf("x=%d y=%d z=%d\n", wi.axis.x, wi.axis.y, wi.axis.z); } }Mein Betriebssystem ist Ubuntu 9.10 karmic koala.
Ich hoffe ihr könnt mir helfen,
C_ClassicPS: Ich weiß nicht, ob es am Code liegt. Wisst ihr vielleicht, ob und wenn ja, wo es eine Liste mit Abhängigkeiten für "libcwiimote" gibt. Ich konnte leider keine finden.
-
Das sieht aus, als hättest du vergessen die Bibliothek beim Linken anzugeben. Mit welchem Befehl hast du denn kompiliert?
-
Nein, ich hab keine Lib angegeben. Ich bin noch recht neu was c++ angeht, deshalb: Wie gebe ich denn die lib an?
gcc -o wiimote "main.o"Ich kompiliere/linke eigentlich immer aus "KDevelop" raus.
-
Habs jetzt mal mit folgendem Probiert:
gcc -o wiimote -lcwiimote "main.o"jedoch bekomm ich jetzt folgenden Fehler:
main.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `hci_close_dev' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `hci_devba' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `hci_inquiry' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `asin' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `hci_get_route' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `hci_read_remote_name' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `str2ba' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `ba2str' /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote.so: undefined reference to `hci_open_dev' collect2: ld returned 1 exit statusjetzt muss ich wahrscheinlich die libhci oder so hinzufügen...
-
Konnte es jetzt mit folgendem Befehl kompilieren:
g++ -o wiimote -lcwiimote -lbluetooth "main.o"Doch jetzt erhalte ich nach dem Programmstart folgenden Fehler:
~/projects/wiimote$ ./wiimote wiimote_connect(): devba: No such deviceHat jemand eine Idee woran das liegt.
Danke für deine bisherige Hilfe, SeppJ!
-
Ok, deine Schwierigkeiten beim Compilieren hast du ja nun gelöst (hast du denn auch verstanden, warum deine vorhergehenden Versuche nicht funktioniert haben?).
Dein neues Problem ist spezifisch für die Verwendung der wiimote Bibliothek. Da müsstest du mal in einem wiimote Entwicklerforum fragen. Ich kann nur raten:
- "00:1F:32:8F:E7:71" fällt vom Himmel. Ist das sicher richtig?
- Gehört zu der wiimote-Bibliothek noch mehr? Vielleicht irgendwas falsch installiert?
Kompetente Hilfe kann dir da nur ein anderer wiimote Entwickler geben.
-
Ja, ich habe meine Fehler verstanden. Das eine war doch schlichtweg der falsche Compiler (C anstatt c++). Der andere war, dass ich nicht wusste, dass man die libs manuell übergeben muss.
"00:1F:32:8F:E7:71" ist die Bluetooth-Adresse meiner Wiimote.Habe auch noch was gefunden: Das ist ein Problem, dass es mit der wiiote-lib 0.4 gibt. Mit der 0.2 soll es funktionieren. Deshalb hab ich auch noch die 0.2 installiert und kompiliere nun auch mit dieser.
Nur leider klappt dies wieder nicht. Diesmal folgender Fehler:g++ -o wiimote -lcwiimote2 -lbluetooth "main.o" /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libcwiimote2.so: undefined reference to `hci_remote_name' collect2: ld returned 1 exit statusWieder ein bisschen danach gesucht und wies ausseiht leigt es daran, dass die Bluetooth-lib zu neu ist.
Mal sehen, was sich machen lässt.