Chaosmango Posted September 5, 2016 at 08:36 AM Share Posted September 5, 2016 at 08:36 AM 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? Quote Link to comment Share on other sites More sharing options...
FlyingDoc Posted September 5, 2016 at 08:48 AM Share Posted September 5, 2016 at 08:48 AM Ich habe ganz einfach alle Dateiendungen ".c" der Includes einfach in ".cpp" umbenannt. Schon wird alles aktzeptiert. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 5, 2016 at 09:39 AM Author Share Posted September 5, 2016 at 09:39 AM Ich kopiere mir den Quellcode ja raus und speichere es dann als *.cpp ab... funktioniert aber irgendwie dann trotzdem nicht. Quote Link to comment Share on other sites More sharing options...
photron Posted September 5, 2016 at 10:10 AM Share Posted September 5, 2016 at 10:10 AM Welche Fehlermeldung bekommst du denn? Du musst das Problem schon genauer beschreiben. Meine Glaskugel ist gerade zur Inspektion Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 5, 2016 at 03:56 PM Author Share Posted September 5, 2016 at 03:56 PM 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 ========== Quote Link to comment Share on other sites More sharing options...
photron Posted September 5, 2016 at 04:04 PM Share Posted September 5, 2016 at 04:04 PM Du musst deinem Projekt auch noch die ip_connection.c und die bricklet_oled_128x64.c Datei hinzufügen. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 5, 2016 at 07:01 PM Author Share Posted September 5, 2016 at 07:01 PM 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 Quote Link to comment Share on other sites More sharing options...
Nic Posted September 5, 2016 at 11:49 PM Share Posted September 5, 2016 at 11:49 PM 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. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 6, 2016 at 06:04 AM Author Share Posted September 6, 2016 at 06:04 AM 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? Quote Link to comment Share on other sites More sharing options...
FlyingDoc Posted September 6, 2016 at 06:19 AM Share Posted September 6, 2016 at 06:19 AM 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. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 6, 2016 at 06:26 AM Author Share Posted September 6, 2016 at 06:26 AM 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? Quote Link to comment Share on other sites More sharing options...
photron Posted September 6, 2016 at 07:34 AM Share Posted September 6, 2016 at 07:34 AM 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. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 6, 2016 at 05:41 PM Author Share Posted September 6, 2016 at 05:41 PM 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! Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 6, 2016 at 07:15 PM Author Share Posted September 6, 2016 at 07:15 PM 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? Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 6, 2016 at 09:19 PM Author Share Posted September 6, 2016 at 09:19 PM 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? Quote Link to comment Share on other sites More sharing options...
FlyingDoc Posted September 6, 2016 at 09:48 PM Share Posted September 6, 2016 at 09:48 PM Lade sie einfach in dein Quellcodeverzeichnisses deones Programmes auf dem RED mit hoch. Dann wird er sie finden. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 7, 2016 at 04:04 AM Author Share Posted September 7, 2016 at 04:04 AM Hätte ich schon probiert... dann bringt er die Fehlermeldung beim kompilieren. Weil er ja laut makefile im Verzeichnis sucht... Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 7, 2016 at 12:47 PM Author Share Posted September 7, 2016 at 12:47 PM 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. Quote Link to comment Share on other sites More sharing options...
photron Posted September 7, 2016 at 01:14 PM Share Posted September 7, 2016 at 01:14 PM 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>" Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 7, 2016 at 06:14 PM Author Share Posted September 7, 2016 at 06:14 PM 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... Quote Link to comment Share on other sites More sharing options...
FlyingDoc Posted September 7, 2016 at 08:32 PM Share Posted September 7, 2016 at 08:32 PM Gugsd du ==>hier !!! Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 7, 2016 at 08:38 PM Author Share Posted September 7, 2016 at 08:38 PM 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... Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 8, 2016 at 08:16 AM Author Share Posted September 8, 2016 at 08:16 AM 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. Quote Link to comment Share on other sites More sharing options...
photron Posted September 8, 2016 at 09:00 AM Share Posted September 8, 2016 at 09:00 AM 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. Quote Link to comment Share on other sites More sharing options...
Chaosmango Posted September 8, 2016 at 09:11 AM Author Share Posted September 8, 2016 at 09:11 AM Ich hab es zweimal gemacht und immer ohne Fehler geschrieben... Irgendwie ist hier der Wurm drin... Sorry Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.