如何在Allegro 5中使用带有Algif5插件的GIF?

时间:2018-01-24 21:22:52

标签: c++ allegro allegro5

我尝试使用它:https://github.com/allefant/algif5但这不起作用。

#include "algif.h"

char const* pathBoss1 = "boss1.gif";
ALGIF_ANIMATION *boss1Gif = NULL;
boss1Gif = algif_load_animation(pathBoss1);
// in a function: 
al_draw_bitmap(algif_get_bitmap(bossGif, al_get_time()), boss.x, boss.y, 0);

它会抛出许多像这样的错误

  

严重级代码描述项目文件行抑制状态   错误LNK2019未解析的外部符号_algif_get_bitmap被引用   在函数“void __cdecl drawBoss(struct Boss&,struct   ALGIF_ANIMATION *)“   (?drawBoss @@ YAXAAUBoss @@ PAUALGIF_ANIMATION @@@ Z)LearnAllegro C:\ Users \ User \ source \ repos \ LearnAllegro \ LearnAllegro \ LearnAllegro.obj 1

好像找不到图书馆。 (我将所有下载的文件放入ProjectName> ProjectName,因为还有其他.h文件)

我该怎么办?

2 个答案:

答案 0 :(得分:1)

没有官方库 - 而是需要将algif.c,bitmap.c,gif.c和lzw.c添加到源文件中。

或者,如果您知道如何创建库,则可以从这4个文件中创建一个库,然后链接到该库。

答案 1 :(得分:0)

图书馆对我不起作用,最后我分别输入了gif帧。我使用的for循环可能会帮助你: 简化版本:

for (int i = 0; i < maxFrameBoss1; i++) {
    std::string filename;
    filename = "boss1//frame_" + std::to_string(i) + "_delay-0.03s.png";


    boss1Image[i] = al_load_bitmap(filename.c_str());
    if (!boss1Image[i]) {
        fprintf(stderr, "failed to create boss1Image bitmap!\n");
        return -1*i;
    }
}

确保在程序开头包含此内容:

#include <iostream>
#include <string>