Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: multiple definition of `main'  (Прочитано 16712 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Anemon
Новенький

ru
Offline Offline

« : 14-06-2017 08:43 » 

Всем привет!
Написал игру на c++ с использованием библиотеки SDL2.
После кампиляции  вылезла ошибка: multiple definition of `main'

Вот сам код:
Код: (C++)
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include "SDL2/SDL.h"
#include "SDL2/SDL_main.h"
#include "SDL2/SDL_mixer.h"
#include <math.h>
#include <time.h>


SDL_Window * win=0;
SDL_Renderer * ren=0;
Mix_Music * bgm=0;
Mix_Chunk * BAM=0;
Mix_Chunk * BAM12=0;
Mix_Chunk * easy=0;
void terminate(void)
{
        if(ren){SDL_DestroyRenderer(ren);}
        if(win){SDL_DestroyWindow(win);}
        SDL_Quit();
}
int main(int argc, char**argr)
{

        double x,y,dx,dy,a;
        int run=0;
        int score1=0;
        int score2=0;
        SDL_Rect paddle1,paddle2,ball,wall1,wall2;
        const Uint8 * keys;
        SDL_Event e;

        srand(time(0));

        if(SDL_Init(SDL_INIT_EVERYTHING)!=0)
        {
                printf("Init:%s\n",SDL_GetError());
                exit(1);
        }
        atexit(terminate);
        win=SDL_CreateWindow("FGame by Anemon v1.2",50,50,800,600,SDL_WINDOW_SHOWN);
        if(!win){
                printf("win:%s\n", SDL_GetError());
                exit(1);
                }
        ren=SDL_CreateRenderer(win,-1,SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC);
        if(!ren){
                printf("Ren:%s\n",SDL_GetError());
                exit(1);
        }

        Mix_OpenAudio(13100, MIX_DEFAULT_FORMAT, 4, 1024);
        bgm = Mix_LoadMUS("bgm.mp3");
        //Mix_PlayMusic(bgm, -1);
        BAM = Mix_LoadWAV("bam.wav");
        BAM12 = Mix_LoadWAV("bam12.wav");
        easy = Mix_LoadWAV("easy.wav");

        wall1.x=wall2.x=0;
        wall1.y=0;
        wall2.y=575;
        wall1.w=wall2.w=800;
        wall1.h=wall2.h=25;
        paddle1.x=0;
        paddle2.x=775;
        paddle1.w=paddle2.w=25;
        paddle1.h=paddle2.h=100;
        paddle1.y=paddle2.y=250;
        ball.w=ball.h=20;
        ball.x=390;
        ball.y=290;
        x=400;
        y=300;
        for(;;){
                while(SDL_PollEvent(&e)){
                        switch(e.type)
                        {
                        case SDL_QUIT:
                                        exit(0);
                                        break;
                        }
                }
                keys=SDL_GetKeyboardState(0); //Подключение управления клавишами
                //Управление первой ракеткой(начало)
                if(keys[SDL_SCANCODE_W]){
                        if(paddle1.y>25){
                                paddle1.y-=4;
                        }
                }
                if(keys[SDL_SCANCODE_S]){
                        if(paddle1.y+paddle1.h<575){
                                paddle1.y+=4;
                        }
                }
                //Управление первой ракеткой(конец)
                //Управление второй ракеткой(начало)
                if(keys[SDL_SCANCODE_UP]){
                        if(paddle2.y>25){
                                paddle2.y-=4;
                        }
                }
                if(keys[SDL_SCANCODE_DOWN]){
                        if(paddle2.y+paddle2.h<575){
                                paddle2.y+=4;
                        }
                }
                //Управление второй ракеткой(конец)
                //Запуск шарика(начало)
                if(keys[SDL_SCANCODE_SPACE])
                {
                        if(!run){
                                run=1;
                                a=M_PI/6*(1+(rand()%1000)/1000.0);
                                dx=4.0*cos(a);
                                dy=4.0*sin(a);
                                if(rand()%2){dx=-dx;}
                                if(rand()%2){dy=-dy;}
                        }
                }
                //Запуск шарика(конец)
                    //Движение шарика(начало)
                        if(run){
                                x+=dx;
                                y+=dy;
                                ball.x=(int)(x-10);
                                ball.y=(int)(y-10);
                        }
                        //Движение шарика(конец)
                        //Удар об стену игрока 1 и 2(начало)
                        if((x<0)||(x>=800))
                        {
                                run=0;
                                x=400;
                                y=300;
                                ball.x=(int)(x-10);
                                ball.y=(int)(y-10);
                                Mix_PlayChannel(3, easy, 0);
                        }
                        //Удар об стену игрока 1 и 2(конец)
                        //Удар об стену(начало)
                        if(((y-10)<(wall1.y+wall1.h))||((y+10)>(wall2.y)))
                        {
                                dy=-dy;
                                Mix_PlayChannel(2, BAM, 0);
                        }
                        //Удар об стену(конец)
                        //Удар об ракетку(начало)
                        if(((x-10)<(paddle1.x+paddle1.w))&&((y-10)>(paddle1.y))&&((y+10)<(paddle1.y+paddle1.h))){
                                        dx=fabs(dx);
                                        Mix_PlayChannel(3, BAM12, 0);
                        }
                        if(((x+10)>(paddle2.x))&&((y-10)>(paddle2.y))&&((y+10)<(paddle2.y+paddle2.h))){
                                        dx=-fabs(dx);
                                        Mix_PlayChannel(3, BAM12, 0);
                        }
                        //Удар об ракетку(конец)
                        //Рисование на экране(начало)
                SDL_SetRenderDrawColor(ren,0,63,0,255); //Цвет
                SDL_RenderClear(ren);
                SDL_SetRenderDrawColor(ren,255,255,255,255);
                SDL_RenderDrawRect(ren,&wall1);
                SDL_RenderDrawRect(ren,&wall2);
                SDL_RenderDrawRect(ren,&paddle1);
                SDL_RenderDrawRect(ren,&paddle2);
                SDL_SetRenderDrawColor(ren,0,0,0,255);
                SDL_RenderFillRect(ren,&ball);
                SDL_RenderPresent(ren);
                //Рисование на экране(конец)

        }
        return 0;
}
Записан
darkelf
Молодой специалист

no
Offline Offline

« Ответ #1 : 14-06-2017 13:21 » new

Не хватает подробностей - ОС, среда разработки, какой компилятор и какой версии. Сообщения, которые выдал компилятор. Судя по этому, например, в случае с mingw32 проблема может быть в том, что линковка происходит библиотеками для другого компилятора.
« Последнее редактирование: 14-06-2017 13:23 от darkelf » Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 14-06-2017 16:11 » 

https://wiki.libsdl.org/SDL_SetMainReady#Code_Examples
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines