6

事実は次のとおりです。Ubuntuでコードブロックを使用しています。SDL と SDL_ttf をインストールし、それらを含めて正常にリンクしました。フォント FreeSerif の画面にテキストをレンダリングしたい。

問題は次のとおりです。プログラムが TTF_OpenFont("FreeSerif.ttf,20") という行に到達すると、NULL が返されます。これが TTF_RenderText_Solid 関数に渡されると、セグメンテーション違反が発生します。プロジェクトにフォント ファイルを追加しましたが、まだ機能しません。

コードは次のとおりです。
TTF_Init();

TTF_Font *font = TTF_OpenFont("FreeSerif.ttf",20); //This returns NULL 

if(!font){printf("Unable to open font");exit(1);} //The program exits here
4

3 に答える 3

10

私は同じ問題を抱えていましたが、パスエラーのようです.TTF_GetError()はこれをスローします:

Arial.ttf を開けませんでした

相対パスではなく、絶対パスでフォントを設定する必要があります。私にとっては、そうでした

/ライブラリ/フォント/Arial.ttf

それ以外の :

Arial.ttf

于 2013-05-07T09:52:50.927 に答える
4

絶対パス名を指定する必要があります。または、ファイルがプログラムの現在のディレクトリにあることを確認する必要があります (実行可能ファイルのディレクトリとは異なります)。

代わりにこれを使用してください:

TTF_Font *font = TTF_OpenFont("/path/to/FreeSerif.ttf",20);
于 2013-05-10T08:20:52.140 に答える