Je veux compiler ce code:
#include <SDL.h>
int main(int argc, char* argv[]) {
return 0;
}
Mais cela ne peut pas être lié: Error 1 error LNK1561: entry point must be defined
Il existe un code étrange dans cette bibliothèque: http://hg.libsdl.org/SDL/file/75726efbf679/include/SDL_main.h
#define main SDL_main
J'ai aussi ajouté SDL2.lib;SDL2main.lib
à Paramètres du projet => Éditeur de liens => Entrée.
Que puis-je faire pour exécuter ce projet?
VS 2012 SP3, projet C++ vide.
Selon ce fil sur Dream.In.Code:
Cliquez avec le bouton droit sur le nom du projet -> Propriétés -> Développez l'onglet Éditeur de liens -> Système -> Sous-système: assurez-vous qu'il s'agit de
Console (/SUBSYSTEM:CONSOLE)
Si vous souhaitez masquer la fenêtre de la console ou si vous êtes en train de débuter une application multithread , vous devez définir le sous-système sur Window (/SUBSYSTEM:WINDOW)
.
J'ai trouvé que la configuration/SOUS-SYSTEME: CONSOLE ne représente que la moitié de la solution. La seconde moitié consiste à ajouter SDL_MAIN_HANDLED
à vos définitions supplémentaires. L’indice que j’ai utilisé pour résoudre ce problème se trouve dans SDL_main.h . Définissez SDL_MAIN_HANDLED
pour indiquer aux fichiers d'en-tête SDL que vous avez déjà fourni une fonction main
et ne souhaitez pas que celle-ci redéfinisse son propre point d'entrée.
NE PAS#undef main
! Bien que ce soit une très mauvaise pratique du côté de SDL de le redéfinir, ils ont de bonnes raisons: WinMain
est défini du côté de la bibliothèque et utilisé pour exécuter du code init, ce qui aide à résoudre les problèmes de compatibilité. (encore plus lorsque vous utilisez différentes implémentations SDL, comme Steam ou le portage sur d'autres plateformes comme Android)
Alors, que devrais-tu faire? Sous Windows, vous devez toujours inclure SDL2main.lib
avant SDL2.lib
et assurez-vous que votre fichier principal est au format suivant:
int main(int argc, char* argv[]) // CORRECT
void main(int argc, char* argv[]) // WRONG
int main(int, char**) // MAY BE CORRECT
Source: SDL2 Windows FAQ
Comme l'a écrit tinky_winki
Faites un clic droit sur le nom du projet -> Propriétés -> Développez l’onglet Linker -> Système -> Sous-système: assurez-vous qu'il s'agit de la console (/ SUBSYSTEM: CONSOLE)
Mais si vous ne vous attendez pas à une console avec fenêtre, utilisez simplement,/SUBSYSTEM: WINDOWS
Projet >> Propriétés >> Éditeur de liens >> Avancé >> point d’entrée = main .__ et appliquer