Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [VC2015] Installation de SDL1.2 : pas de point d'entrée
    Bonjour !

    Étant étudiant, j'apprend à coder en C, et Microsoft à eu la gentillesse de corrompre mon âme avec une copie gratuite de Visual Studio 2015. Or, pour nos TD, nous sommes censés utiliser SDL, dans sa version 1.2 , que j'ai donc essayé d'installer sur VS.

    Sur le conseil de mon prof, j'ai donc suivie cette méthode :
    -build les fichier SDL.dll, SDL.lib, et SDLmain.lib depuis le ficher "SDL-1.2.15.zip" ici
    -creer un fichier SDL1.2 à la racine de mon projet
    -Y mettre une dossier lib avec les .lib
    -Y mettre une dossier include avec les .h
    -mettre SDL.dll dans les dossier Debug et Release
    sous Visual, dans Propriétés/entrée mettre dépendance supplémentaire à "../SDL1.2/lib/SDL.lib;../SDL1.2/lib/SDLmain.lib"
    dans le code ajouter un petit #include "../SDL1.2/include/SDL.h"

    Mon code ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <stdlib.h>
     
    #include "../SDL1.2/include/SDL.h"
     
    int main(int argc, char** argv)
    {
        return EXIT_SUCCESS;
    }
    Donc bon, ça devrait marcher, je pense que le niveau de programmation est raisonnable, sauf que Visual me sort :
    "le point d'entrée doit etre definis"

    Sortie :

    1>------ Début de la génération : Projet : TD_Maze, Configuration : Debug Win32 ------
    1>LINK : fatal error LNK1561: le point d'entrée doit être défini
    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

    Donc bon, j'avoue être vraiment désemparé, et je ne sais franchement plus quoi faire, d'autant que la même manip, sur l'ordi du prof, marche apparement avec VisualStudio 2014 ...

    EDIT : Bon, j'ai fais exactement la même chose avec SDL2, et ça marche, donc je pense pas m'acharner sur SDL1.2 , j'ai franchement pas la motivation ...
    Je devrais mettre le sujet en "Résolus" ?
      0  0

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 729
    Points : 11 143
    Points
    11 143
    Par défaut
    -creer un fichier SDL1.2 à la racine de mon projet
    Un répertoire plutôt ?
    VisualStudio 2014
    Ça existe ça ???
    On est passé de VS2013 à VS2015 (la VS2014, ça doit peut-être être une CTP distribuée sous le manteau alors).

    Le message d'erreur indique qu'il ne trouve pas le "main".
    J'ai mis "main" entre guillemets parce que le nom et la signature de ce point d'entrée est fonction du type de projet : main, WinMain, Main, ...

    Vous êtes sûr d'avoir choisi un type de projet qui a comme point d'entrée un "int main(int argc, char** argv)" ?

    Le plus simple, c'est de créer un projet non vide.
    Il contiendra le squelette de la fonction du point d'entrée, avec le nom et la signature attendus.
      1  0

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Erratum, je parlais bien d'un répertoire, mon dossier ressemble à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Project/Projet_TD
     
        SDL1.2
            include
                SDL.h et autres
            lib
                SDL.lib et SDLmain.lib
        Projet_TD
            main.c
        Debug
            SDL.dll
        Release
            SDL.dll
    Mon prof a clairement dit "Visual Studio 14" en parlant de sa version, j'ai pas creusé

    J'ai créé le projet via Fichier -> Nouveau Projet -> Application Console Win32 -> Options supplémentaires -> Projet Vide

    J'en ai crée un nouveau, sans l'option "fichier vide", et généré le fichier avec le code de base, en ajoutant l'include, les libs, et la dll . Cette fois une erreur un peu différente :

    1>------ Début de la génération*: Projet*: ConsoleApplication1, Configuration*: Debug Win32 ------
    1> stdafx.cpp
    1> ConsoleApplication1.cpp
    1>MSVCRTD.lib(initializers.obj) : warning LNK4098: conflit entre la bibliothèque par défaut 'msvcrt.lib' et les autres bibliothèques*; utilisez /NODEFAULTLIB:library
    1>SDLmain.lib(SDL_win32_main.obj) : error LNK2019: symbole externe non résolu _SDL_main référencé dans la fonction _main
    1>c:\users\léo\documents\visual studio 2015\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe : fatal error LNK1120: 1 externes non résolus
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
      0  0

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 729
    Points : 11 143
    Points
    11 143
    Par défaut
    Mon prof a clairement dit "Visual Studio 14" en parlant de sa version, j'ai pas creusé
    Faudrait qu'il arrête de faire du bricolage avec des CTP, il n'y a pas de support sur ces machins.
    https://support.microsoft.com/fr-fr/kb/2967191

    Cette fois une erreur un peu différente :
    OK, donc, j'en déduis que j'avais raison sur le "gourage" de nom/signature de la fonction point d'entrée.
    C'est quoi son nom/ sa signature alors ?

    1>MSVCRTD.lib(initializers.obj) : warning LNK4098: conflit entre la bibliothèque par défaut 'msvcrt.lib' et les autres bibliothèques*; utilisez /NODEFAULTLIB:library
    Je la sentais venir celle-là, avec une SDL téléchargée à l'arrache. (SDL, c'est du C, c'est caca, SFML ou une autre bibliothèque graphique C++, c'est mieux.)
    Le linker vous dit juste que ça va être la merde parce que vous avez des dll/lib qui utilisent des version différentes de la C-Runtime.

    Ne mélangez pas des trucs compilés en release avec des trucs compilé en debug.

    1>SDLmain.lib(SDL_win32_main.obj) : error LNK2019: symbole externe non résolu _SDL_main référencé dans la fonction _main
    Le linker vous dit que c'est bien gentil d'avoir truandé le compilateur en ayant les .h qui vont bien, mais que lui, il s'en cogne et qu'on le blouse pas aussi facilement.
    Le linker, bin il veut la .lib qui contient la méthode "_SDL_main", et qu'il serait peut-être temps d'aller voir la documentation de la dite bibliothèque pour savoir dans qu'elle .lib elle se planque

    sous Visual, dans Propriétés/entrée mettre dépendance supplémentaire à "../SDL1.2/lib/SDL.lib;../SDL1.2/lib/SDLmain.lib"
    Bon, si vous avez touché à ça, vous savez comment ajouter la lib qui va bien.
    Bon, un truc qui irrite ma rétine, ne pas mettre le chemin des lib ici, seulement le nom des fichiers .lib.
    Il y a une autre option qui indique dans quel répertoire chercher les .lib.
      0  0

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bah, je me doute qu'un fichier est manquant/foireux, mais je suis bien incapable de le trouver, j'ai maté la doc, et j'ais suivie à la lettre les instructions. J'ai par contre rien trouvé sur le point d'entrée. Y'as bien un truc avec SDLmain, mais j'ai clairement pas le niveau pour en saisir le sens ...

    Par rapport à SDL, je sais, c'est pas top, mais on code en C, pas en C++

    un truc qui irrite ma rétine, ne pas mettre le chemin des lib ici, seulement le nom des fichiers .lib
    J'ai du mal à comprendre la remarque, c'est le fait que ce soit des chemin relatifs ? l'idée est de pouvoir partager d'un coup le dossier, sans devoir installer SDL sur l'OS. Bon je pense être complement à coté de la plaque, mais bon ...
      0  0

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 729
    Points : 11 143
    Points
    11 143
    Par défaut
    J'ai du mal à comprendre la remarque, c'est le fait que ce soit des chemin relatifs ?
    Le problème n'est pas dans le relatif, c'est que cela soit un chemin.
    Vous devez spécifier les chemin dans "Propriété du projet -> Propriété de configuration -> Répertoires VC++ -> Répertoires de bibliothèques"
    Dans "Propriété du projet -> Propriété de configuration -> Edition de lien -> entrée -> Dépendances supplémentaires ", ne mettez que le nom des fichiers .lib, sans aucun chemin.
      0  0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Install RemObject error db.pas
    Par MABB dans le forum Delphi
    Réponses: 2
    Dernier message: 25/04/2007, 15h03
  2. [Win Installer] Erreur : n'est pas accessible
    Par nullitos dans le forum Windows XP
    Réponses: 1
    Dernier message: 01/04/2007, 15h26
  3. [Module] netbeans et les dlls c'est pas au point
    Par eclesia dans le forum NetBeans
    Réponses: 3
    Dernier message: 04/03/2007, 19h20
  4. La fonction BuilCriteria n'accepte pas les points
    Par Tofalu dans le forum Access
    Réponses: 3
    Dernier message: 10/07/2006, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo