Undefined reference to 'SDL_main'

J'ai récemment décidé d'essayer de travailler avec SDL avec CodeBlocks 10.05. J'ai commencé avec le tutoriel sur http://www.sdltutorials.com/sdl-tutorial-basics et fait de mon mieux pour la suivre. Malheureusement, je rencontre:

..\..\..\..\..\..\SDL\SDL-1.2.15\lib\libSDLmain.a(SDL_win32_main.o):SDL_win32_main.c|| undefined reference to `SDL_main'|

quand j'essaie de le compiler.

J'ai cherché à travers de nombreuses questions sur ce site et d'autres tutoriels (principalement le tutoriel sur LazyFoo et la CodeBlocks wiki) et n'arrive pas à trouver une solution.

  • C:\SDL\SDL-1.2.15\include a été ajouté dans le Compilateur onglet (Annuaires de Recherche)
  • C:\SDL\SDL-1.2.15\lib a été ajouté dans l'éditeur de liens onglet
  • Les bibliothèques libmingw32.une, libSDLmain.une, libSDL.dll.un sont liés dans l'ordre
    • libmingw32.a partir de la MinGW\lib dans le dossier de CodeBlocks répertoire d'installation
  • SDL.dll est à la fois dans le dossier System32 et dans le dossier du projet

Lors de la tentative de suivre le tutoriel sur le CodeBlocks wiki, on m'a dit que SDL.h n'a pas pu être trouvé dans le répertoire donné (lors d'un nouveau projet SDL).

CApp.cpp

#include "CApp.h"
#include "SDL\SDL.h"

CApp::CApp(){
    Surf_Display=NULL;

    Running=true;
}

int CApp::OnExecute(){
    if (OnInit()==false){
        return -1;
}

SDL_Event Event;

while (Running){
    while (SDL_PollEvent(&Event)){
        OnEvent(&Event);
    }
    OnLoop();
    OnRender();
}

OnCleanup();
return 0;
}

int main(int argc, char* argv[]){
    CApp theApp;

    return theApp.OnExecute();
}

L'acpp.h

#ifndef CAPP_H_INCLUDED
#define CAPP_H_INCLUDED
#include "SDL\SDL.h"

class CApp{
    private:
        bool Running;
        SDL_Surface* Surf_Display;

    public:
        CApp();
        int OnExecute();

    public:
        bool OnInit();
        void OnEvent(SDL_Event* Event);
        void OnLoop();
        void OnRender();
        void OnCleanup();
};



#endif //CAPP_H_INCLUDED
SI vous avez besoin de fournir SDL_main, au lieu d'avoir un main vous avez un SDL_main
Je suis désolé, pourriez-vous expliquer ce que vous entendez par là? Je suis relativement nouveau à la programmation et à ne pas tout comprendre. Est-ce que avez à faire avec mon installation de la SDL (Liaison et autres joyeusetés) ou est-il un problème dans le code? Merci!
Jamais l'esprit, je vois ce qui est fait dans SDL_main.h
Il faut que ce soit quelque chose qui manque dans votre éditeur de liens de l'installation. La façon dont vous l'avez décrit, il devrait fonctionner (et, en effet, que, du moins pour moi).
J'ai juste essayé de refaire tous les reliant à la suite de ce tutoriel à l'énoncé ainsi que les points énumérés ci-dessus. De procédure pas à pas ce que j'ai fait: - Téléchargé SDL-1.2.15-win32-x64.zip (64-bit de Windows) et SDL-devel-1.2.15-mingw32.tar.gz (Mingw32) à partir du site web de SDL. - Extrait le premier dans la C:\SDL et a placé l'SDL.dll à partir de la deuxième dans le dossier du projet et system32 - Ajouté le \include et \lib dans le compilateur et l'éditeur de liens onglets respectivement Liés libmingw32.une, libSDLmain.un, et libSDL.dll.un dans cet ordre.

OriginalL'auteur Prismriver | 2012-05-29