Jump to content

Recommended Posts

Posted

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 ==========

 

Posted

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

 

 

Posted

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.

Posted

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.

Posted

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!

Posted

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?

 

Posted

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>"

Posted

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...

Posted

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...

Posted

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...