IMG_load和TTF_OpenFont在Code :: Blocks

时间:2015-09-20 21:49:28

标签: c++ codeblocks sdl-2

最近,我一直致力于在Debian上的Code :: Blocks 10.03上使用SDL2的项目。我需要加载一些PNG图像和一个字体来写一些东西到屏幕上。但是,当我尝试加载文件时,IMG_load和TTF_OpenFont都会产生分段错误。

我100%确定文件位于当前路径上,因为使用buckt.png而不是bucket.png等错误的文件名会导致SDL_GetError和IMG_GetError返回“无法打开buckt.png” ,与TTF文件相同;而如果我使用正确的文件名,则会导致段错误。有趣的是,如果我从命令行编译项目,使用g++ main.cpp -std=c++11 -lSDL2 -lSDL2_image -lSDL2_ttf它编译并运行完美,但由于我被迫使用Code :: Blocks,终端不是一个选项

对于showcase,此代码段位于main函数的最顶部。正如您可能已经猜到的那样,在Code :: Blocks上,它将不起作用。

#include <iostream>
#include <limits>

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

using namespace std;

int main( int argc, char* args[] ) {
    //Start SDL
    SDL_Init( SDL_INIT_EVERYTHING );
    TTF_Init();

    // The segfault is caused here, using Code::Blocks
    TTF_Font *gFont = TTF_OpenFont("LiberationMono-Bold.ttf",20); 
    if (gFont == NULL) {
        // This is never reached
        cout << "gFont is empty!" << endl;
    }

    TTF_Quit();
    SDL_Quit();
}

执行工作目录设置为.,它是Code :: Blocks项目的主文件夹,也是字体和图像所在的位置。

如果有人找到解决此问题的方法,请告诉我。

0 个答案:

没有答案