Allegro4/C++ дает ошибку

Я использую следующий код (Allegro 4, C++) и получаю следующую ошибку:

#include <allegro.h>

//defines
#define MODE GFX_SAFE
#define WIDTH 640
#define HEIGHT 480

int main (void)
{
    int ret;
    int counter;
    //initialize allegro
    allegro_init();
    install_keyboard();
    install_timer();
    srand(time(NULL));

    //set up screen
    //set video mode    
    ret = set_gfx_mode(MODE, WIDTH, HEIGHT, 0, 0);
    if (ret != 0)
        allegro_message(allegro_error);

        allegro_exit();
    return 0;
}

Ошибка:

1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

Все предыдущие ответы относительно этой ошибки говорят мне переключиться на «Консоль» с «Windows»; но у меня уже есть «Консоль» в «Свойствах» -> «Компоновщик» -> «Система» -> «Подсистема».

Если у вас нет ответа, я был бы рад кое-чему, что я мог бы сделать, чтобы помочь сузить проблему: я использовал Allegro с C, но я хочу использовать C++, чтобы воспользоваться преимуществами ООП, и поэтому я все еще есть много работы, чтобы сделать.

Обновлять:

#include <iostream>
#include <allegro.h>

using namespace std;


int main ()
{
    cout << "Hello World";
    return 0;

}

не работает, но

#include <iostream>

using namespace std;


int main ()
{
    cout << "Hello World";
    return 0;

}

делает.

Что теперь? Ответ: Начните с пустого проекта.

Update2: перезапущен с пустым проектом, тот же код. Первый блок (alleg.lib в компоновщике, но allegro.h не включен) работает, второй код (включая allegro.h) не работает. Однако ошибка в другом:

1> ССЫЛКА: фатальная ошибка LNK1561: необходимо определить точку входа

Что теперь?

Редактировать ^ 2: игнорировать все следующее: я забыл вернуться к включению Allegro. Теперь это работает. Спасибо всем за ответы.

Изменить: Добавление:

END_OF_MAIN()

or

int END_OF_MAIN()

выдает ошибку "фатальная ошибка C1004: обнаружен неожиданный конец файла"


person Zac Quicksilver    schedule 01.09.2013    source источник
comment
это не связано с аллегро. Я бы рекомендовал перезапустить с нуля, создать новый проект, консоль win32 пустая. Поставьте сборку hello world, запустите и идите дальше, добавляя свой код и связываясь с allegro.   -  person alexbuisson    schedule 02.09.2013
comment
Спасибо. Похоже, Hello world не работает. Я вернусь к SO, как только узнаю, что происходит.   -  person Zac Quicksilver    schedule 02.09.2013


Ответы (1)


Вы получаете сообщение об ошибке, потому что пытаетесь интегрировать аллегро в непустой проект.

Вы должны создать проект как ПУСТОЙ ПРОЕКТ:

New... > Project... > Visual C++ > Empty Project

--ИЗМЕНИТЬ ВТОРУЮ ОШИБКУ--

Вы должны добавить END_OF_MAIN() после закрывающей скобки int main():

int main() {
    //...
}
END_OF_MAIN()
person Casey    schedule 02.09.2013
comment
Отлично. Исправлена ​​эта ошибка, теперь у меня есть новая: обновлен основной вопрос - person Zac Quicksilver; 02.09.2013