【问题标题】:How to use GIFs in Allegro 5 with the Algif5 addon?如何通过 Algif5 插件在 Allegro 5 中使用 GIF?
【发布时间】:2018-07-04 01:10:49
【问题描述】:

我尝试使用这个: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 文件)

我该怎么办?

【问题讨论】:

    标签: c++ allegro allegro5


    【解决方案1】:

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

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

    【讨论】:

    • 我将这些文件放在 projectName > projectName 中并添加了#include "algif.h"。我收到这些错误:函数_mainLearnAllegroC:\Users\User\source\repos\LearnAllegro\LearnAllegro\LearnAllegro.objunresolved 外部符号_algif_destroy_animation 在函数_main LearnAllegroC:\Users\User\source\repos\LearnAllegro\ 中引用的外部符号_algif_destroy_animation LearnAllegro\LearnAllegro.obunresolved 函数“void__cdecldrawBoss(structBoss &,struct ALGIF_ANIMATION *)”(?drawBoss@@YAXAAUBoss@@PAUALGIF_ANIMATION@@@Z) 中引用的外部 symbol_algif_get_bitmap 学习...
    • 我需要添加一些其他的“包含”还是只需要这个:#include "algif.h"?
    • 如果我像这样添加所有“包含”:#include "algif.h" #include "algif.c" #include "bitmap.c" #include "gif.c" #include "lzw .c"
    • ..那么还有一些其他错误:'initializing': cannot convert from 'void *' to 'ALGIF_BITMAP *'LearnAllegro c:\users\user\source\repos\learnallegro\learnallegro\bitmap .c4 ErrorC2440'=':无法从 'void *' 转换为 'uint8_t *'LearnAllegroc:\users\user\source\repos\learnallegro\learnallegro\bitmap.c7 ErrorC2440'initializing':无法从 'void *' 转换为'ALGIF_ANIMATION *' LearnAllegroc:\users\user\source\repos\learnallegro\learnallegro\gif.c 69 ErrorC2440'=': 无法从 'void *' 转换为 'ALGIF_FRAME *'LearnAllegroc:\users\user\source\repos \learnallegro\learnallegro\gif.c158
    • 确保将这些文件编译为 C 而不是 C++
    【解决方案2】:

    该库对我不起作用,我最终单独输入了 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多