【问题标题】:Unable to build Allegro C++ program in Visual Studio 2010无法在 Visual Studio 2010 中构建 Allegro C++ 程序
【发布时间】:2019-03-15 23:32:13
【问题描述】:

我是 allegro 的初学者,我刚刚正确安装了 allegro,这是我的代码(我的第一个代码):

#include<allegro5/allegro.h>
#include<allegro5\allegro_font.h>
#include<allegro5/allegro_native_dialog.h>
#include<allegro5\allegro_ttf.h>
#include<iostream>
int main()
{
    ALLEGRO_DISPLAY *display;
    if (!al_init())
    {
        al_show_native_message_box(display,
                                   NULL,
                                   NULL,
                                   "Could not initialize allegro 5",
                                   NULL,
                                   NULL);
    }
    display = al_create_display(800, 600);
    if (!display)
    {
        al_show_native_message_box(display,
                                   NULL,
                                   NULL,
                                   "Could not initialize allegro WINDOW ",
                                   NULL,
                                   NULL);
    }
    al_rest(5.0);
    al_destroy_display(display);
    return 0;
}

现在这是构建日志显示的内容:

1>----- 构建开始:项目:Allegro_intro,配置:Debug Win32 ------ 1> 主.cpp 1>c:\users\krish\desktop\projects\allegro_intro\allegro_intro\main.cpp(11):警告 C4700:使用了未初始化的局部变量“显示” 1>main.obj:错误 LNK2005:_main 已在 font.obj 中定义 1>C:\Users\krish\Desktop\Projects\Allegro_intro\Debug\Allegro_intro.exe:致命错误 LNK1169:找到一个或多个多重定义符号 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

然后有一个对话框显示“无法启动程序...系统找不到指定的文件”。 请告诉我该怎么做

【问题讨论】:

  • 无法解决第二个错误,部分原因是我根本不知道 allegro,但第一个错误是因为ALLEGRO_DISPLAY *display; 在使用它之前没有将display 指向任何东西.应该有一些你可以调用的初始化函数来获得一个有效的ALLEGRO_DISPLAY 对象,你可以在al_show_native_message_box 中使用。我建议您查阅您一直关注的文档或教程。看起来您可能错过了一行。
  • 您的 Main 方法被声明了两次。搜索另一个 Main 方法,并删除其中一个
  • allegro.cc/manual/5/al_create_display 看起来很适合您缺少的东西。
  • 看起来你在font.cpp 中有另一个main 函数你不能有两个。
  • 那是One Definition Rule,或者在更戏剧性的演示中,youtube.com/watch?v=sqcLjcSloXs

标签: c++ c allegro allegro5


【解决方案1】:

display 在传递给第一次调用 al_show_native_message_box 时未初始化,这将导致随机内存访问。如果需要在调用 al_init 和 al_create_display 之前调用 al_show_native_message_box,则为 display 参数传递 NULL。

始终初始化您的变量。 ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多