IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C++ Discussion :

error LNK2001: unresolved external symbol _WinMain@16


Sujet :

C++

  1. #1
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut error LNK2001: unresolved external symbol _WinMain@16
    Bonjour vous tous ,
    j'utilise un vieux visual studio C++ 5.0 pour creer mes ptits programmes ;
    d'habitude tout marche bien mais là je sèche ...
    QQ pourrait-il compiler ce projet et me dire ce qui ne va pas ou bien si ça
    fonctionne chez lui ?!
    c pas très long ,tout d'abord un header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #ifndef	CMONBITMAP
    #define	CMONBITMAP
     
    const		int	MINI_INFO_HEADER_SIZE=16;
    const		int	FILE_HEADER_SIZE=14;
    const		int	RGBQUAD_SIZE=4;
     
    #include <windows.h>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    class CMonBitmap {
    private :
    	BITMAPFILEHEADER*	strctFileHeader;//
    	BITMAPINFOHEADER*	strctInfoHeader;
    	BYTE*			chRGBQuads;
    	BYTE*			chBitmap;
    	int				uNBQuad;// nombre de structures RGBQUAD
    	ifstream		inputFile;
     
    	void setFileHeader(void);
    	void setInfoHeader(void);
    	void setBitmap(void);
    public :
    	CMonBitmap(string);
    	~CMonBitmap();
    	int getNBColors(void) {return uNBQuad;}
    };
     
    #endif	// CMONBITMAP
    puis le cpp correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #include "bitmap.h"
     
    CMonBitmap::CMonBitmap(string fileName) {
    	inputFile.open(fileName.c_str());// Ouverture du flux
    	setFileHeader();
    	setInfoHeader();
    	setBitmap();
    	inputFile.close();
    }
     
    CMonBitmap::~CMonBitmap() {
    	delete chBitmap;
    	delete chRGBQuads;
    	delete strctInfoHeader;
    	delete strctFileHeader;
    }
     
    void CMonBitmap::setFileHeader(void) {
    	strctFileHeader = new  BITMAPFILEHEADER;
    	inputFile>>strctFileHeader->bfType;
    	inputFile>>strctFileHeader->bfSize;
    	inputFile>>strctFileHeader->bfReserved1;
    	inputFile>>strctFileHeader->bfReserved2;
    	inputFile>>strctFileHeader->bfOffBits;
    }
     
    void CMonBitmap::setInfoHeader(void) {
    	strctInfoHeader = new BITMAPINFOHEADER;
    	inputFile>>strctInfoHeader->biSize;
    	inputFile>>strctInfoHeader->biWidth;
    	inputFile>>strctInfoHeader->biHeight;
    	inputFile>>strctInfoHeader->biPlanes;
    	inputFile>>strctInfoHeader->biBitCount;
    	if(strctInfoHeader->biSize > MINI_INFO_HEADER_SIZE)//les autres champs sont présents
    	{
    		inputFile>>strctInfoHeader->biCompression;
    		inputFile>>strctInfoHeader->biSizeImage;
    		inputFile>>strctInfoHeader->biXPelsPerMeter;
    		inputFile>>strctInfoHeader->biYPelsPerMeter;
    		inputFile>>strctInfoHeader->biClrUsed;
    		inputFile>>strctInfoHeader->biClrImportant;
    	}
    }
     
    void CMonBitmap::setBitmap(void) {
    	int	octetFinal = (strctFileHeader->bfSize - FILE_HEADER_SIZE - strctInfoHeader->biSize);
    	chRGBQuads = new BYTE[octetFinal];
    	for(int i=0;i<octetFinal;i++) inputFile>>chRGBQuads[i];
    	if((strctInfoHeader->biSize > MINI_INFO_HEADER_SIZE) && (strctInfoHeader->biClrUsed == 0))
    	{
    		switch(strctInfoHeader->biBitCount)
    		{
    			case 1:
    				uNBQuad = 2;
    				break;
    			case 4:
    				uNBQuad = 16;
    				break;
    			case 8:
    				uNBQuad = 256;
    				break;
    			case 24:
    				uNBQuad = 0;
    				break;
    			default:	//erreur ?!?! (division par zéro)
    				uNBQuad = 1/(strctInfoHeader->biBitCount - strctInfoHeader->biBitCount);
    				break;
    		}
    		chBitmap = chRGBQuads + (uNBQuad * RGBQUAD_SIZE);
    	}
    	else if(strctInfoHeader->biClrUsed > 0) uNBQuad = strctInfoHeader->biClrUsed;
    	else 1/(strctInfoHeader->biBitCount - strctInfoHeader->biBitCount);	// erreur !?!? (division par zéro)
    }
    enfin main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <iostream>
    #include "bitmap.h"
     
    int main(void) {
    	CMonBitmap	bitmap("fortLocke.bmp");
     
    	cout<<"nombre de couleurs : "<<bitmap.getNBColors()<<endl;
     
    	return 0;
    }
    Voilà ; ce code est sensé ouvrir .bmp afin de stocker les informations le concernant dans une classe.
    Sauf que j'obtient le message suivant au linkage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Linking...
    LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
    Debug/bitmap.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Cette erreur de link vient du fait que tu compiles en "Windows application" au lieu de "console application".

    C'est dans les propriétés du projet.

    Sinon VS 5.0... Il est temps de mettre ça à jour.
    Images attachées Images attachées  

  3. #3
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Merci à toi ! ça marche !!!
    Mais ... comment as-tu su ? et que me conseilles tu comme nouvel IDE ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par exe2bin Voir le message
    Mais ... comment as-tu su ? et que me conseilles tu comme nouvel IDE ?
    C'est une erreur courante, et ça m'est déjà arrivé. ^^

    Sinon niveau IDE, si tu aimes VS, VS 2012 en version express est disponible gratuitement sur le site de Microsoft : ici

    Sinon, Code::blocks, QtCreator, Eclipse, etc.. ya de quoi faire, c'est en fonction des préférences.

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 190
    Points : 17 146
    Points
    17 146
    Par défaut
    Un bon indice: winmain() est le main() des "window applications".
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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

Discussions similaires

  1. Error LNK2001 "unresolved external symbol _MAIN__"
    Par rihab1509 dans le forum Fortran
    Réponses: 2
    Dernier message: 06/05/2009, 23h00
  2. Link code error LNK2001: unresolved external symbol
    Par Benjijmin dans le forum Fortran
    Réponses: 4
    Dernier message: 02/12/2008, 12h24
  3. error LNK2001: unresolved external symbol _errno
    Par stof dans le forum Visual C++
    Réponses: 4
    Dernier message: 10/08/2007, 15h40
  4. Réponses: 2
    Dernier message: 05/06/2007, 09h37
  5. [ error LNK2001: unresolved external symbol]
    Par ARachid dans le forum MFC
    Réponses: 2
    Dernier message: 18/05/2007, 13h33

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