【问题标题】:How to include SDL_ttf in pro file Qt Creator with SDL2.0如何在带有 SDL2.0 的 pro 文件 Qt Creator 中包含 SDL_ttf
【发布时间】:2014-04-15 19:46:36
【问题描述】:

我正在尝试添加一个简单的文本以在窗口中呈现它。但我有一个问题......

每次控制台向我显示以下答案时:

"Couldn't load font file"

我不知道这个问题的根源是什么。也许错误在 .pro 文件中:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

INCLUDEPATH += /usr/include

LIBS += -L/usr/lib -lSDL2 -lSDL2_image -lSDL_ttf

SOURCES += main.cpp 

main.cpp 中还有另一部分:

#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>

using namespace std;

void loop();

int main()
{

    SDL_Init(SDL_INIT_VIDEO);
    SDL_SetHint( SDL_HINT_RENDER_VSYNC, "1" );
    SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "1" );

    if( TTF_Init() == -1 )
    {
        cout << TTF_GetError() << endl;
    }
    else {

        TTF_Font* font = TTF_OpenFont("lazy.ttf", 10);

        if( font == NULL ) {

            cout << TTF_GetError() << endl;

        }
        else {

            cout << "Font loaded" << endl;

        }
    }

    loop();

    return 0;
}

void loop() {

    bool quit(false);
    SDL_Event e;

    while( !quit ) {

        SDL_PollEvent(&e);

        switch( e.type ) {

        case SDL_QUIT:
            quit = true;
            break;
        }
    }

}

更多信息:

  • Fedora 20
  • Qt 创建者
  • 所有用 yum 安装的 SDL 包
  • 与可执行文件在同一目录下的ttf字体

提前谢谢你!

【问题讨论】:

  • 当您从 SDL_ttf 收到运行时错误时,这表明问题不在代码中,而是字体文件不在可以找到的位置。检查它确实是,并且命名正确(记住文件名是区分大小写的)。
  • 我再次检查,但没有任何改变,仍然有这个错误。但我在 SDL 1.2 中翻译了我的代码,它运行良好。 SDL 2 不想使用 SDL_ttf...我不知道为什么...还有其他想法吗?
  • 检查你确实有 SDL2 版本的 SDL_ttf,搜索 Fedora 包提示 rpm 版本可能是 2.0.11,即 SDL_ttf 1.2。 2.0 版本称为 2.0.12。
  • 哇,它有效!谢谢 !对于会有同样错误的人,我用 yum 删除了 SDL_ttf 并从这个页面安装了 SDL2_ttf-2.0.12 的 tar.gz 版本:libsdl.org/projects/SDL_ttf 然后我修改了 pro 文件,如下所示:TEMPLATE = app CONFIG +=控制台 CONFIG -= app_bundle CONFIG -= qt INCLUDEPATH += usr/include/ LIBS += -L/usr/lib -L/usr/local/lib/ -lSDL2 -lSDL2_image -lSDL2_ttf SOURCES += main.cpp

标签: sdl qt-creator fedora sdl-2 sdl-ttf


【解决方案1】:

将 cmets 放入官方答案中:

如果您意外链接到 SDL_ttf 而不是 SDL2_ttf,则可能会发生这种情况。函数名称相同,因此调用成功,但操作失败。

如果使用 SDL 2,请确保与 SDL2_ttf 链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多