Невозможно собрать программу Allegro C ++ в Visual Studio 2010

Я полный новичок в 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>------ Build started: Project: Allegro_intro, Configuration: Debug Win32 ------
1>  main.cpp
1>c:\users\krish\desktop\projects\allegro_intro\allegro_intro\main.cpp(11): warning C4700: uninitialized local variable 'display' used
1>main.obj : error LNK2005: _main already defined in font.obj
1>C:\Users\krish\Desktop\Projects\Allegro_intro\Debug\Allegro_intro.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Затем появляется диалоговое окно с надписью «НЕВОЗМОЖНО ЗАПУСТИТЬ ПРОГРАММУ ... Система не может найти указанный файл». Подскажите, пожалуйста, что с этим делать


person Arjun Ashok    schedule 11.10.2018    source источник
comment
Не могу помочь со второй ошибкой, отчасти потому, что я вообще не знаю allegro, но первая ошибка связана с тем, что ALLEGRO_DISPLAY *display; не указывает display ни на что перед его использованием. Должна быть какая-то функция инициализации, которую можно вызвать, чтобы получить действительный объект ALLEGRO_DISPLAY, который можно использовать в al_show_native_message_box. Я рекомендую обратиться к документации или руководству, которым вы следили. Похоже, вы пропустили строчку.   -  person user4581301    schedule 11.10.2018
comment
Ваш метод Main объявляется дважды. Найдите другой метод Main и удалите один из них.   -  person X39    schedule 11.10.2018
comment
allegro.cc/manual/5/al_create_display выглядит хорошим кандидатом на то, кем вы являетесь отсутствует.   -  person user4581301    schedule 11.10.2018
comment
Похоже, у вас есть еще main функция в font.cpp У вас не может быть двух.   -  person Retired Ninja    schedule 11.10.2018
comment
Это правило одного определения, или, в более драматической форме, youtube.com/watch?v=sqcLjcSloXs.   -  person user4581301    schedule 11.10.2018


Ответы (1)


display не инициализируется при первом вызове al_show_native_message_box, что приводит к произвольному доступу к памяти. Если вам нужно вызвать al_show_native_message_box до вызова al_init и al_create_display, передайте NULL для параметра отображения.

Всегда инициализируйте свои переменные. ;)

person BugSquasher    schedule 22.03.2019