SDL 2.0已编译,但未能运行

SDL 2.0 compiles, but failt to run

本文关键字:运行 编译 SDL      更新时间:2023-10-16

Im在Xubuntu 64位上使用最新的SDL 2.0版本。我通过提供的安装脚本安装了源代码。

编译效果很好,但是当试图打开字体或图像(无论其扩展名如何)时,它总是无法打开。

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

int main (int argc, char *argvp[])
{

    if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
    {
        cout << SDL_GetError() << endl;
    }

    if (TTF_Init() == -1)
    {
        std::cout << TTF_GetError() << std::endl;
        return 2;
    }

    TTF_Font *font1 = NULL;
    font1 = TTF_OpenFont("SourceSansPro-Regular.ttf", 20);  
    if (font1 == NULL)
    {
        std::cout << "ERROR OPENING FONT = " << TTF_GetError() << std::endl;
    }
    TTF_CloseFont(font1);
    SDL_Quit();
    return 0;
}

我用编译

g++ -Wall fontTEST.cpp -o TEST -lSDL2 -lSDL_ttf (NOTE that SDL_ttf installs as such, not as SDL2_ttf)

并得到以下错误:Failed to load font: 0 Couldn't load font file

图像也会出现这种情况。我已经尝试过使用不同的字体和图像,显然,如果我使用SDL1.2编译,它是有效的,只是不使用2.0。此外,为什么提供的安装脚本安装lib并将文件夹包括在/user/local/中?

我将它们移到/usr/,但问题仍然存在。

记住以下内容:

  • 在Unix上,文件路径区分大小写
  • 正如Xonar的评论中所说,波浪号'~'扩展是一个shell功能,它在C/C++程序中不起作用,你应该使用真实路径

strace日志清楚地表明这条路出了问题。

您应该尝试以下操作:

  • 将字体文件重命名为"font.ttf"
  • 将其放入/home/user/font.ttf
  • 使用"/home/user/font.ttf"作为代码中的路径