SDL_ttf einbinden

Simple Directmedia Layer: Portable Spieleprogrammierung
LadyBird
Beiträge: 24
Registriert: So Jul 31, 2011 8:12 pm

SDL_ttf einbinden

Beitrag von LadyBird » Do Mär 08, 2012 8:52 am

Hallo!
Ich habe versucht SDL_ttf auszuprobieren. Nun habe ich erst mal nur die Datei eingebunden:

Code: Alles auswählen

#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
Trotzdem erhalte ich Fehlermeldungen:

Code: Alles auswählen

/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `Find_Glyph':|
(.text+0x2a5)||undefined reference to `FT_Load_Glyph'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `Find_Glyph':|
(.text+0x3e8)||undefined reference to `FT_Render_Glyph'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `Find_Glyph':|
(.text+0x5b9)||undefined reference to `FT_Get_Char_Index'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `Find_Glyph':|
(.text+0x5d7)||undefined reference to `FT_Render_Glyph'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `Find_Glyph':|
(.text+0x962)||undefined reference to `FT_Outline_Transform'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_Init':|
(.text+0xb38)||undefined reference to `FT_Init_FreeType'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_CloseFont':|
(.text+0xb7f)||undefined reference to `FT_Done_Face'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_OpenFontIndexRW':|
(.text+0xd07)||undefined reference to `FT_Open_Face'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_OpenFontIndexRW':|
(.text+0xd55)||undefined reference to `FT_Set_Pixel_Sizes'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_OpenFontIndexRW':|
(.text+0xe26)||undefined reference to `FT_Set_Char_Size'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_SizeUNICODE':|
(.text+0x1353)||undefined reference to `FT_Get_Kerning'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_RenderUNICODE_Solid':|
(.text+0x1825)||undefined reference to `FT_Get_Kerning'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_RenderUNICODE_Shaded':|
(.text+0x1ed5)||undefined reference to `FT_Get_Kerning'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_RenderUNICODE_Blended':|
(.text+0x257d)||undefined reference to `FT_Get_Kerning'|
/usr/lib/libSDL_ttf.a(SDL_ttf.o)||In function `TTF_Quit':|
(.text+0x28e9)||undefined reference to `FT_Done_FreeType'|
||=== Build finished: 15 errors, 0 warnings ===|
An meinem Code kann es nicht liegen, der besteht nur aus einer leeren main-Funktion. Vermutlich habe ich vergessen irgendeine Datei dazu zu linken. Um welche handelt es sich dabei?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: SDL_ttf einbinden

Beitrag von Xin » Do Mär 08, 2012 9:20 am

Offenbar benutzt SDL_ttf eine weitere Library, die Du ebenfalls linken musst.

Wenn ich mich recht entsinne benutzt SDL ebenfalls pkg-config?

Hier steht, dass die FreeType-Library (FT_....!) benötigt wird. Hast Du die auf dem Rechner?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: SDL_ttf einbinden

Beitrag von nufan » Do Mär 08, 2012 11:12 am

Hast du beim Linker "-lSDL_ttf" angegeben?
Xin hat geschrieben:Wenn ich mich recht entsinne benutzt SDL ebenfalls pkg-config?
Das Programm heißt "sdl-config".

Also z.B.:

Code: Alles auswählen

g++ -o test test.cpp -Wall `sdl-config --cflags --libs` -lSDL_ttf

LadyBird
Beiträge: 24
Registriert: So Jul 31, 2011 8:12 pm

Re: SDL_ttf einbinden

Beitrag von LadyBird » Fr Mär 09, 2012 5:32 pm

Wenn ich das auf diese Weise mache, funktioniert es. Jedoch hatte ich eigentlich versucht, mit Codeblocks zu arbeiten. Dort hatte ich libSDL_ttf.a und libfreetype.a eingebunden. Danach waren es statt 15 nur noch 5 Fehler. Heute habe ich das gleiche nochmal versucht, wieder mit einer leeren main-Funktion, und es wurden jedoch keine Fehler mehr angezeigt. Wenn ich das mit dem "normalen" g++ Compiler versuche, funktioniert das alles einwandfrei, auch ein Beispielprogramm. Dieses wirft unter Codeblocks jedoch wieder die selben 5 Fehler von gestern auf.
Trotzdem vielen Dank für die schnelle Hilfe, jetzt funktioniert es schon mal, wenn auch etwas anders, als ich es mir vorgestellt hatte. Aber immerhin.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: SDL_ttf einbinden

Beitrag von Xin » Fr Mär 09, 2012 5:52 pm

Schau Dir die Ausgabe von Sdlconfig an und überttrage das nach Codeblocks, wie im Tutorial beschrieben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: SDL_ttf einbinden

Beitrag von nufan » Mo Mär 12, 2012 11:12 am

LadyBird hat geschrieben:Jedoch hatte ich eigentlich versucht, mit Codeblocks zu arbeiten. Dort hatte ich libSDL_ttf.a und libfreetype.a eingebunden. Danach waren es statt 15 nur noch 5 Fehler.
Du musst libSDL.so und libSDL_ttf.so zu den gelinkten Bibliotheken hinzufügen.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: SDL_ttf einbinden

Beitrag von oenone » Di Mär 13, 2012 7:16 pm

dani93 hat geschrieben:
LadyBird hat geschrieben:Jedoch hatte ich eigentlich versucht, mit Codeblocks zu arbeiten. Dort hatte ich libSDL_ttf.a und libfreetype.a eingebunden. Danach waren es statt 15 nur noch 5 Fehler.
Du musst libSDL.so und libSDL_ttf.so zu den gelinkten Bibliotheken hinzufügen.
Naja, die libSDL_ttf linkt er schon statisch, ist also nicht mehr nötig..

LadyBird
Beiträge: 24
Registriert: So Jul 31, 2011 8:12 pm

Re: SDL_ttf einbinden

Beitrag von LadyBird » Mi Mär 14, 2012 9:12 pm

oenone hat geschrieben:
dani93 hat geschrieben:
LadyBird hat geschrieben:Jedoch hatte ich eigentlich versucht, mit Codeblocks zu arbeiten. Dort hatte ich libSDL_ttf.a und libfreetype.a eingebunden. Danach waren es statt 15 nur noch 5 Fehler.
Du musst libSDL.so und libSDL_ttf.so zu den gelinkten Bibliotheken hinzufügen.
Naja, die libSDL_ttf linkt er schon statisch, ist also nicht mehr nötig..
Nur mal nebenbei: sie ;)

Stimmt, dass bringt nichts. Die Fehler bleiben da. Scheinbar muss ich zlib oder so dazu linken, nur finde ich auch mit der Suche keine vernünftige Datei. Die Dateien, die auf .so oder .a enden
Es sind zwar mehrere Ordner mit dem Namen vorhanden, aber diese beinhalten nur Headerdateien, die leer sind, wenn ich versuche sie mit einem Texteditor zu öffnen. Vorhanden sein müssen die notwendigen Dateien ja, weil ohne Codeblocks funktioniert alles.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: SDL_ttf einbinden

Beitrag von oenone » Do Mär 15, 2012 7:24 pm

LadyBird hat geschrieben:Nur mal nebenbei: sie ;)
Ups, sorry..
LadyBird hat geschrieben:Die Fehler bleiben da. Scheinbar muss ich zlib oder so dazu linken, nur finde ich auch mit der Suche keine vernünftige Datei. Die Dateien, die auf .so oder .a enden
Was für Fehler genau?

btw, .so-Dateien können auch noch ne Version danach haben, z.B. libfoo.so.2.3

Wie genau kompilierst du ohne Codeblocks?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: SDL_ttf einbinden

Beitrag von Xin » Fr Mär 16, 2012 9:54 am

Ohne Codeblocks läuft es ja - Viel Interessanter die Frage, wie die Einstellungen des Linkers bei Codeblocks ist.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten