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

12.02.2009, 15:23

[Gelöst] SDL ttf Problem

Hallo,

ich habe vor kurzem ein bisschen mit SDL rumexperimentiert.
Da ich auch gerne Texte "wiedergeben" wollte, habe ich bei der Suche nach einer Lösung "SDL_ttf" gefunden, mit der es möglich sein soll, Texte anzuzeigen.

Als Code wie er in meinem Programm vorkommt habe ich diesen aus dem Internet gefunden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
TTF_Init();
TTF_Font *font = TTF_OpenFont("arial.ttf",18);   
SDL_Color clrBlack = {200, 0, 0};
SDL_Surface *stext = TTF_RenderText_Solid(font, "Dein Text", clrBlack);
SDL_Rect dstTextKoordinaten = {300, 300, 0, 0};

SDL_BlitSurface(stext, NULL, screen, &dstTextKoordinaten);


SDL_FreeSurface(stext);


Wenn ich nun versuche es in Visual C++ 2008 zu debuggen kommt folgende Fehlermeldung:

Quellcode

1
2
3
4
1>Programm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_TTF_RenderText_Solid" in Funktion "_SDL_main".
1>Programm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_TTF_OpenFont" in Funktion "_SDL_main".
1>Programm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_TTF_Init" in Funktion "_SDL_main".
1>C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Programm\Debug\Programm.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.


Ich habe selber gegoogled und leider nichts gefunden was mir helfen könnte.
In diesem Forum gab es mal ein ähnliches Problem, der Beitrag hat mir allerdings nicht geholfen da der dort angegebene Link anscheind nicht mehr funktioniert.

Ich bitte um Hilfe.
(Wäre auch nett wenn mir jemand sagen könnte was genau ich unter zusätzliche Include/Bibliotheksverzeichnisse für SDL ttf angeben muss, ich glaube dort habe ich nicht alles.)

2

12.02.2009, 15:44

die SDL ttf lib gelinkt?
hab jetz eig keine Ahnung von SDL oder SDL ttf, aber das sieht sehr danach aus, als wären die SDL ttf Funktionen in ner extra lib/dll, und du hättest vergessen, die lib zu linken ;)
//EDIT: seh grad, soweit bist du selber schon gekommen. Du sagst ja, du hättest den Quellcode aus dem Inet - stand da nicht dabei, welche libs man braucht?

3

12.02.2009, 15:52

Nicht das ich wüsste, ich müsste aber eigntl. alles gelinkt haben da nicht sonderlich viel bei SDL ttf dabei war.

4

12.02.2009, 15:57

naja, die Funktionen sidn ja definitiv in keiner der libs, die du gelinkt hast, sonst würde es keinen Linkerfehler geben -> irgendeine musst entweder du vergessen haben, oder in dem Paket fehlen.

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

5

12.02.2009, 16:03

Sicher, dass du auch wirklich alles gelinkt hast?
Wenn du die SDL gemeinsam mit SDL_TTF verwendest müsste in der entsprechenden Zeile
"SDLmain.lib SDL.lib SDL_ttf.lib" stehen - ist das so bei dir?

Oder hast du in deinen VSC++ Verzeichnissen einen Fehler?

6

12.02.2009, 16:27

Ach, ich hab den Fehler nun selber gefunden, ich hab leider die Abhängigkeiten etc. nur im Release eingestellt.
Das Programm "funktioniert" nun, allerdings stürzt es sofort ab und Visual zeigt folgende Meldung:

Unbehandelte Ausnahme bei 0x10001d3b in Programm.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.

Ist was mit dem Code nicht in ordnung?

7

12.02.2009, 17:52

Geh halt mal mit dem Debugger durch!?

(hab einen Doppelpost von dir gelöscht)
fka tm

8

12.02.2009, 19:15

du hast irgendwo nen nullzeiger drin, denn wie vllt ersichtlich, versucht das Programm aus position 0 des Arbeitsspeichers zu lesen, was es natürlich nicht darf ;)

9

14.02.2009, 18:58

Erstmal danke an alle für die Hilfe,

ich komme leider nicht weiter da ich immernoch diesen Fehler bekomme.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
SDL_Surface *text;         
TTF_Font *text1;
SDL_Color color={255,255,150};

text1 =  TTF_OpenFont("Denial2Regular.ttf",24);
text =  TTF_RenderText_Blended(text1,"Test1234",color);

SDL_BlitSurface(text,NULL,screen,NULL); 


Der Debugger hört an folgender Stelle auf:

C-/C++-Quelltext

1
text =  TTF_RenderText_Blended(text1,"Test1234",color);




Fehler:

Quellcode

1
Unbehandelte Ausnahme bei 0x10001d3b in Programm.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.


Ich nehme an das es irgendwas mit dem Zeiger "text1" zu tun hat,
bin aber überfordert.

Ich bitte um Hilfe!

10

14.02.2009, 19:11

Liefert

C-/C++-Quelltext

1
TTF_OpenFont("Denial2Regular.ttf",24); 


einen gültigen Zeiger zurück (text1 != NULL)?
fka tm

Werbeanzeige