Geschrieben September 5, 2016 at 08:365. Sep 2016 Hallo ich hab immer das Problem, das die Beispielprogramme sich mit Visual C++ nicht korrekt kompilieren lassen. Weiß hier jemand abhilfe, wo ich den Haken setzen kann, das er C Code oder so auch akzeptiert?
Geschrieben September 5, 2016 at 08:485. Sep 2016 Ich habe ganz einfach alle Dateiendungen ".c" der Includes einfach in ".cpp" umbenannt. Schon wird alles aktzeptiert.
Geschrieben September 5, 2016 at 09:395. Sep 2016 Autor Ich kopiere mir den Quellcode ja raus und speichere es dann als *.cpp ab... funktioniert aber irgendwie dann trotzdem nicht.
Geschrieben September 5, 2016 at 10:105. Sep 2016 Welche Fehlermeldung bekommst du denn? Du musst das Problem schon genauer beschreiben. Meine Glaskugel ist gerade zur Inspektion
Geschrieben September 5, 2016 at 15:565. Sep 2016 Autor Also ich verwende Microsoft Visual C++ 2010 V:10.0.4... SP1 Ich will z.b. dieses Programm kompilieren: https://raw.githubusercontent.com/Tinkerforge/oled-128x64-bricklet/master/software/examples/c/example_hello_world.c und bekommen das: 1>------ Build started: Project: Test, Configuration: Debug Win32 ------ 1> OLED.cpp 1>OLED.obj : error LNK2001: unresolved external symbol _ipcon_destroy 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_destroy 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_write_line 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_clear_display 1>OLED.obj : error LNK2001: unresolved external symbol _ipcon_connect 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_create 1>OLED.obj : error LNK2001: unresolved external symbol _ipcon_create 1>C:\Users\XYZ\Downloads\tinkerforge_c_bindings_2_1_11\example_project\Debug\Test.exe : fatal error LNK1120: 7 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Geschrieben September 5, 2016 at 16:045. Sep 2016 Du musst deinem Projekt auch noch die ip_connection.c und die bricklet_oled_128x64.c Datei hinzufügen.
Geschrieben September 5, 2016 at 19:015. Sep 2016 Autor Okay. Danke. Jetzt hab ich die Test.exe Jetzt lade ich sie hoch in den RedBrick und bekomme die Meldung: :o 2015-07-09T02:00:04.748324+0200 ------------------------------------------------------------------------------- ./Test.exe: ./Test.exe: cannot execute binary file
Geschrieben September 5, 2016 at 23:495. Sep 2016 Die Exe wird vermutl. nur auf einem Win Arch. lauffähig sein. Auf dem Red ist aber eine Arm Cpu, du solltest nur die Projekt Sourcen hochladen und auf dem Red kompilieren.
Geschrieben September 6, 2016 at 06:046. Sep 2016 Autor http://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html#api-bindings-c Aber hier ist doch immer die rede von einem Windowssystem wo die exe kompiliert wird oder verstehe ich das falsch?
Geschrieben September 6, 2016 at 06:196. Sep 2016 Um dein Programm auf dem RED laufen zu lassen musst du es auch auf dem RED compilieren. Auf dem RED läuft kein Windows sonder ein Linux. Genau gesagt Debian Linux. Du musst dein Programmprojekt im BrickViewer auf den RED hochladen und dann compilieren. Siehe hier.
Geschrieben September 6, 2016 at 06:266. Sep 2016 Autor Das heisst, ich lade die ip_connection.cpp bricklet_oled_128x64.cpp oled.cpp (eigene Datei) hoch und lass es dort compilieren? die Header Dateien sollte er ja haben oder?
Geschrieben September 6, 2016 at 07:346. Sep 2016 Siehe http://www.tinkerforge.com/de/doc/Hardware/Bricks/RED_Brick_Program_Tab.html#c-c Speichere folgendes als Textdatei namens Makefile: # Defines CC=g++ CFLAGS=-c -Wall -I/usr/include/tinkerforge LIBS=-ltinkerforge -lpthread EXE=oled SOURCES=oled.cpp OBJECTS=$(SOURCES:.cpp=.o) # Build Rules all: $(SOURCES) $(EXE) .cpp.o: $(CC) $(CFLAGS) $< -o $@ $(EXE): $(OBJECTS) $(CC) $(OBJECTS) -o $(EXE) $(LIBS) clean: rm -f *.o $(EXE) Und lad es zusammen mit oled.cpp als C/C++ Programm auf den RED Brick. die anderen Dateien hat der RED Brick schon. Bei Schritt 3 trägst du oled als Executable ein und setzt den Haken bei "Compile From Source". Den Rest der Einstellungen kannst du dann so lassen.
Geschrieben September 6, 2016 at 17:416. Sep 2016 Autor argh... ich fress bald nen Besen... kann doch net sein... Das kommt jetzt nach dem hochladen... Defining new program... ...done Setting custom options... ...done Uploading C:\Users\XYZ\Downloads\tinkerforge_c_bindings_2_1_11\example_project\oled.cpp... ...done Uploading C:\Users\XYZ\Downloads\tinkerforge_c_bindings_2_1_11\makefile.txt... ...done Setting command... ...done Setting more custom options... ...done Setting stdio redirection... ...done Executing make... make: *** No targets specified and no makefile found. Stop. ...warning: Could not compile source code Upload finished with 1 warning!
Geschrieben September 6, 2016 at 19:156. Sep 2016 Autor Okay makefile Problem gelöst... war keine TXT file sondern ohne Endung... so nach langen hin und her bin ich jetzt soweit... Executing make... g++ -c -Wall -I/usr/include/tinkerforge oled.cpp -o oled.o g++ oled.o -o oled -ltinkerforge -lpthread oled.o: In function `draw_matrix(_Device*, bool (*) [128])': oled.cpp:(.text+0xe2): undefined reference to `oled_128x64_new_window' oled.cpp:(.text+0x10e): undefined reference to `oled_128x64_write' oled.o: In function `main': oled.cpp:(.text+0x170): undefined reference to `oled_128x64_create' oled.cpp:(.text+0x1bc): undefined reference to `oled_128x64_clear_display' oled.cpp:(.text+0x2c4): undefined reference to `oled_128x64_destroy' collect2: error: ld returned 1 exit status makefile:16: recipe for target 'oled' failed make: *** [oled] Error 1 ...warning: Could not compile source code Upload finished with 1 warning! Kann ich irgendwi mein Dateiverzeichnis sehen?
Geschrieben September 6, 2016 at 21:196. Sep 2016 Autor So also Servo funktioniert... warum der Oled nicht geht weiss ich jetzt auch... die Header-Datei ist auf dem RedBrick nicht vorhanden... Wie bekomme ich die dorthin? bzw. ist diese nicht normalerweise installiert?
Geschrieben September 6, 2016 at 21:486. Sep 2016 Lade sie einfach in dein Quellcodeverzeichnisses deones Programmes auf dem RED mit hoch. Dann wird er sie finden.
Geschrieben September 7, 2016 at 04:047. Sep 2016 Autor Hätte ich schon probiert... dann bringt er die Fehlermeldung beim kompilieren. Weil er ja laut makefile im Verzeichnis sucht...
Geschrieben September 7, 2016 at 12:477. Sep 2016 Autor Gibt es die Möglichkeit von A nach B was zu kopieren mit der Brick Console? Weil das neue Image hab ich auf die Karte gezogen... hat aber nix gebracht.
Geschrieben September 7, 2016 at 13:147. Sep 2016 Führe mal folgende Befehle in der RED Brick Console aus (benötigt Internetverbindung): sudo -s cd /usr/tinkerforge/bindings wget http://download.tinkerforge.com/bindings/c/tinkerforge_c_bindings_latest.zip unzip -q -d c tinkerforge_c_bindings_latest.zip cd c/source/ make prefix=/usr make install exit Danach solltest du aktuelle C/C++ Bindings auf dem RED Brick haben. Nachtrag: Das RED Brick Image 1.8 hat C/C++ Bindings die neu genug für das LED 128x64 Bricklet sind. Ich habe es gerade getestet und es funktioniert genauso wie beschrieben. Laut deiner make Ausgabe fehlt der Header nicht. Sondern Symbole/Funktionen in libtinkerforge.a. Das ergibt aber keinen Sinn. Du kannst dennoch versuchen die C/C++ Binding wie beschrieben zu aktualisieren. In der Console kannst du mit "cp <src> <dst>" kopieren. Je nachdem wohin zu kopieren willst muss du das als Root machen: "sudo cp <src> <dst>"
Geschrieben September 7, 2016 at 18:147. Sep 2016 Autor So jetzt hab ich glaub ich herausgefunden, warum das nicht funktioniert... Mal genauer hinschauen würde viel nützen... Im Brick Viewer steht Image Version 1.6 (full Version) :o :o So jetzt ist auf der Karte seit gestern das Image von 1.8 - leider finde ich nicht wie ich das Image installieren kann...
Geschrieben September 7, 2016 at 20:387. Sep 2016 Autor Ja das ist schon klar. Die mmc wurde mit dem Image 1.8 beschrieben unter Windows mit dem Image Programm so wie beschrieben. Nur leider zeigt er immer noch an das der Red brick die Version 1.6 hat. Deswegen die Frage ob bzw. wie man das Image installiert, wenn man es überhaupt braucht...
Geschrieben September 8, 2016 at 08:168. Sep 2016 Autor Aber Theoretisch nimmt er ja die Speicherkarte zum laden? Musste eh was bestellen, hab mir nochmal eine Karte mit bestellt -> dort ist ja das aktuelle Image vorhanden oder? Dann probiere ich es damit nochmal.
Geschrieben September 8, 2016 at 09:008. Sep 2016 Du musst das Image nur auf die Speicherkarte schreiben, das ist alles. Wenn danach der RED Brick immer noch als 1.6 im Brick Viewer angezeigt wird, du aber 1.8 auf die Karte geschrieben hast, dann hat das Schreiben aus irgendwelchen Gründen nicht geklappt.
Geschrieben September 8, 2016 at 09:118. Sep 2016 Autor Ich hab es zweimal gemacht und immer ohne Fehler geschrieben... Irgendwie ist hier der Wurm drin... Sorry
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.