私はSDL2アプリケーションでテキストを描画するために次のコードを用意しています。ビルドして実行すると、私は一貫してTTF_OpenFont() Failed: Couldn't load font file
のエラーが表示されます。私は以下を試しました:SDL_ttf「フォントファイルをロードできませんでした」SDL2 with C++
- フォントファイルが実行中のプログラムのカレントディレクトリにあることを確認してください。実際には、プログラムが実行されている可能性のあるほとんどのディレクトリにフォントを置き、絶対パスで試してみました。
- 異なるアクセス許可を設定すると、ここで説明したよう
- が
SDL_RWFromFile
で個別にファイルを開くと、ファイルを所有している:http://www.gamedev.net/topic/275525-sdl_ttf-weirdness/ - ダウンロードしてSDL_ttfの新しいバージョン(2.0.14)を再コンパイル
ここに私のコードは次のとおりです。
void SDLRenderer::drawText(
const Vector2d& pos,
string message,
const Color& color)
{
if(!TTF_WasInit()) {
cerr << "TTF_Init failed " << TTF_GetError() << endl;
exit(1);
}
TTF_Font* fixed = TTF_OpenFont("./DejaVuSansMono.ttf", 16);
if (fixed == NULL) {
cerr << "TTF_OpenFont() Failed: " << TTF_GetError() << endl;
TTF_Quit();
SDL_Quit();
exit(1);
}
...
また、私はこのコードのクラスのコンストラクタからTTF_Init()
を呼んでいます。また、gdbはエラーの後でバックトレースを与えないため、さらにTTF_OpenFont関数にステップインしてくれないようですので、さらにデバッグする方法は少し不明です。