Jump to content

Recommended Posts

Geschrieben

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

Okay.

 

Danke. Jetzt hab ich die Test.exe

 

Jetzt lade ich sie hoch in den RedBrick und bekomme die Meldung:

 

:o :o :o

2015-07-09T02:00:04.748324+0200

 

-------------------------------------------------------------------------------

 

./Test.exe: ./Test.exe: cannot execute binary file

 

 

Geschrieben

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

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

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

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

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

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 :o :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

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

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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...