Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.04.2014, 17:15

SDL2 mit sdl_ttf kompatibel?

Moin,

ich hab vor Kurzem ein kleines Spiel mit der SDL2 zu programmieren angefangen und bin nun an dem Punkt gelandet, wo ich ttf_font benutzen möchte. Wo das mit der SDL 1.2 gut geklappt hat, liefert mir OpenFont() nun einen Nullpointer zurück. Der Dateipfad zur Schriftart ist sicher gültig, auch sonst habe ich soweit alles aus einem älteren Projekt übernommen. Bevor ich weiter vergeblich suche; Wisst ihr, ob SDL_ttf überhaupt mit SDL2 kompatibel ist?

Ich habe außerdem versucht, SDL2_ttf einzubinden, bekam aber drei Verweise auf nicht aufgelöste externe Symbole. (TTF_Init(), TTF_OpenFont(), TTF_Render_Font() ) Google konnte mir nicht helfen, aber vielleich weiß hier ja jemand, ob diese Funktionen in sdl2_ttf noch existieren...



Bei Bedarf poste ich gern noch Code ;)

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

18.04.2014, 17:41

Ja tun sie. Du benutzt eventuell ältere DLL Dateien. Und SDL2 ist mit SDL2_TTF kombinierbar... ;) Wo hast du denn die SDL, die SDL_TTF und die DLL's her?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

18.04.2014, 18:06

Ich hab die sdl2_ttf hierher: https://www.libsdl.org/projects/SDL_ttf/

die sdl_ttf ebenfalls (der Link oben auf der Seite)

Woher die SDL2 stammt, weiß ich nichtmehr genau, müsste aber eine ähnliche Seite gewesen sein

hab diese c++ dev Lib runtergeladen. War das falsch?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

18.04.2014, 18:11

Wenn du sowohl SDL2 wie auch SDL_TTF2 (beide auf der von dir verlinkten Seite erhältlich) benutzt, sollte es keinerlei Probleme geben.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

5

18.04.2014, 18:39

D:)as ist komisch... Ich hab den Ordner von TTF entpackt, in die VC++ Includeverzeichnisse (und Biblioteksverzeichnisse) verlinkt (x86), die .libs und .dlls in den Projektordner kopiert, unter Linker in den Einstellungen notiert, und sdl_ttf.h in den sdl-ordner kopiert. Dann in das Projekt #include "SDL_ttf.h" geschrieben. Fehlt was oder muss was anders sein? :)


EDIT: Wenn ich nur #include "sdl_ttf.h" schreibe, wird das #include <SDL.h> in sdl_ttf.h anscheinend noch beachtet, weil der Compiler nicht meckert, was den Rest der SDL-"Sachen" betrifft... Der für mich wichtige Teil von sdl_ttf.h fällt aber anscheinend weg :\

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ackaunt« (18.04.2014, 21:37)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

6

18.04.2014, 22:07

Ich verstehe nicht ganz dein Problem. Und wieso kopierst du manuell die SDL_TTF in den SDL Ordner?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

7

18.04.2014, 22:23

Also mein Problem ist, dass wenn ich die SDL2 benutze, die Funktion TTF_OpenFont() nichtmehr funktioniert. Ich wollte daher die sdl2_ttf benutzen, beim Einbinden bekomm ich aber den Fehler, dass die ttf-Funktionen nicht gefunden werden (nicht aufgelöste externe Elemente).
Die .h muss ich doch kopieren, damit das funktioniert oder nicht? Eigentlich weiß ich, wie man sowas einbindet :(

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

8

18.04.2014, 23:09

Die SDL wie auch die SDL2 haben selbstverständlich keine TTF_OpenFont Methoden. ;) Das ist Sache von SDL_TTF(2). Und wenn du die wieder richtig einbindest, funktioniert auch alles, wie du es gewöhnt bist.
Zwecks einbinden, guck mal hier nochmal zur Sicherheit.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

9

19.04.2014, 07:36

Achso, nein, ich meinte, dass nachdem ich sdl zu sdl2 "gemacht" hab, openfont in sdl_ttf nicht funktionierte... Das war natürlich noch eingebunden ;)
Ich hab jetzt erneut ein leeres Projekt erstellt und bin für sdl2 und sdl2_ttf den Anweisungen auf den Seiten gefolgt (entpacken, in vc++ eintragen, .lib verlinken...) der einzige Unterschied ist, dass ich meine .libs nicht im Projektordner habe. Und jetzt bekomm ich für die ganze SDL Linkfehler... Muss ich an der Programmierumgebung etwas beachten? (visual c++ ep 2008)

Danke schonmal, dass du dir die Mühe machst :)

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

10

19.04.2014, 09:09

Ich nehme mal ganz stark an, dass du noch die Verzeichnisse und libs eintragen musst. Hast du das gemacht?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige