Jump to content

C++ Beispielprogramme


Chaosmango

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

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