Jump to content

C++ Beispielprogramme


Recommended Posts

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

 

Link zu diesem Kommentar
Share on other sites

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.

Link zu diesem Kommentar
Share on other sites

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!

Link zu diesem Kommentar
Share on other sites

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?

 

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
Share on other sites

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