我在Visual Studio 2017中启动Allegro 5库时遇到了一些问题。在大多数情况下,我会收到链接器错误(未知/无法识别的外部类型)。我说在大多数情况下,因为这段代码:
#include <stdio.h>
#include <allegro5/allegro.h>
int main(int argc, char **argv) {
ALLEGRO_DISPLAY *display = NULL;
if (!al_init()) {
fprintf(stderr, "failed to initialize allegro!\n");
return -1;
}
display = al_create_display(640, 480);
if (!display) {
fprintf(stderr, "failed to create display!\n");
return -1;
}
al_clear_to_color(al_map_rgb(0, 0, 0));
al_flip_display();
al_rest(10.0);
al_destroy_display(display);
return 0;
}
来源:https://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Displays
像往常一样编译没有错误并按预期运行。但是这段代码:
#include "allegro5/allegro.h"
#include "allegro5/allegro_image.h"
#include "allegro5/allegro_primitives.h"
int main(int argc, char **argv){
ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_DISPLAY_MODE disp_data;
al_init(); // I'm not checking the return value for simplicity.
al_init_image_addon();
al_init_primitives_addon();
al_get_display_mode(al_get_num_display_modes() - 1, &disp_data);
al_set_new_display_flags(ALLEGRO_FULLSCREEN);
display = al_create_display(disp_data.width, disp_data.height);
al_rest(3);
al_destroy_display(display);
return 0;
}
来源:同样的,下一个教程。
在链接器中得到3个错误。许多其他代码也会在链接器中出现各种错误。在这个特例中,错误如下: 错误代码说明 LNK2019无法识别的外部符号__imp__al_init_image_addon在函数_main中引用 LNK2019无法识别的外部符号__imp__al_init_primitives_addon在函数_main中引用 LNK1120无法识别的外部类型数:2
我已经读过Allegro在freetype中有一些依赖关系,所以我使用NuGet(项目包管理器)安装它,就像Allegro一样。我是Visual Studio的新手,所以如果你有一个可能的解决方案,请逐步解释(如果你有能力,请解释一下,这样我就可以学到新东西)
如果您需要一些东西来找到解决方案,请询问并解释我如何才能得到它。
非常感谢提前。
是的,我只是愚蠢。 对于我造成的所有麻烦,我感到很遗憾。 这是因为我不知道我必须在Allegro 5选项卡下的项目属性中启用模块。现在我已经开始运行了。 我很抱歉打扰你。
很高兴你解决了它。对于记录,默认情况下,在Nuget Package for VS中没有链接插件库。在为您的解决方案安装Allegro 5 Nuget软件包后,右键单击项目属性,然后从左侧菜单中选择Allegro5。转到插件库,并启用您正在使用的插件。十分简单。