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 :

Erreur 4 error LNK2019:


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 9
    Points
    9
    Par défaut Erreur 4 error LNK2019:
    Bonjour à tous,

    J'ai un grand problème en essayant de coder sur VS C++ 2005.

    La génération me donne ce message d'erreur, et j'ai essayé toutes les solutions que j'ai trouvé sur les Forums mais sans issu...

    mon programme est simple:

    mon .h
    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
     
    #include <string.h>
     
    #pragma once
     
    class Events
    	{
    	private:
    		double _Time;
    	    char _Status;
     
    	public:
    		double getTime() const { return this->_Time;};
    		char getStatus() const {return this->_Status; };
     
    		void setTime(double t);
    		void setStatus(char s);
     
    		Events(void);
    		~Events(void);
    	};
    Mon .cpp
    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
    #include "StdAfx.h"
    #include "Events.h"
     
     
    inline void Events::setTime(double t){
     
    	this->_Time = t;
     
     
    	};
    inline void Events::setStatus(char s){
     
    	this->_Status = s ;
     
    	}
     
    Events::Events(void)
    	{
    	}
     
    Events::~Events(void)
    	{
    	}
    et mon main
    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
     
    #include "stdafx.h"
    #include <iostream>
     
    #include "Events.h"
    using namespace std;
     
     
     
    //int _tmain(int argc, _TCHAR* argv[])
    int main(void)
    {
        char s ;
        Events *e = new Events;
     
    	e->setStatus(s);
    	e->setTime(1.5);
     
     
        getchar();
    	return 0;
    }
    Je ne sais pas quoi fair...
    Merci par avance de bien m'aider à trouver une solution.
    J'ai rajouté des .lib dans mes params du projet mais echec et même prob.
    Merci par avance
    hy

  2. #2
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Et quel est le message d'erreur ?
    LNK2019 ca ne nous dit rien !! C'est le code d'erreur, quelle est la fonction non définie ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Les fonctions inline doivent être déclarées ET définies dans le fichier entête.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Si c'est main qui n'est pas trouvé, alors il te faut changer les propriétés du programme : tu compiles probablement ton programme en UNICODE, alors qu'il faut le compiler en MBCS.

    Si ce n'est pas main, je ne vois pas. Dans tous les cas, avoir le message d'erreur est important, et il faudrait penser à le donner.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Le code Erreur est ::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	1	error LNK2019: symbole externe non résolu "public: void __thiscall Events::setTime(double)" (?setTime@Events@@QAEXN@Z) référencé dans la fonction _main	LHstar.obj

    La solution etait d'enlever les inline qui ne sont pas définis.

    Mais, j'ai un autre problème si vous pouvez m'aider??
    ci-après le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	1	error C2664: 'strcpy'*: impossible de convertir le paramètre 1 de 'char' en 'char *'	c:\program files\microsoft visual studio 8\common7\ide\visual studio 2005projects\lh_simul\lhstar\events.cpp	14
    et l'image;;

    Il s'agit d'une affectation de chaine de caractère.
    Merci beaucoup

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par titibete Voir le message
    Les fonctions inline doivent être déclarées ET définies dans le fichier entête.
    Effectivement, c'est le problème : puisqu'elles sont définies comme étant inline, elles sont rendues privées à l'unité de compilation. Du coup, les autres unités de compilations ne peuvent pas y faire référence. C'est certainement quelque chose dans ce goût là qui se passe.

    Supprime les inline du fichier cpp, ça devrait régler le problème. Et merci à titibete
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Effectivement, c'est le problème : puisqu'elles sont définies comme étant inline, elles sont rendues privées à l'unité de compilation. Du coup, les autres unités de compilations ne peuvent pas y faire référence. C'est certainement quelque chose dans ce goût là qui se passe.

    Supprime les inline du fichier cpp, ça devrait régler le problème. Et merci à titibete
    Merci c'est fait.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Prototype strcpy:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* strcpy(char* p, const char* q);
    Tu lui donnes un caractère, donc il râle. A noter qu'en C++, il existe d'autres façons de faire plus élégantes !

    A défaut, tu devrais utiliser strncpy, plus "sécurisé" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* strncpy(char* p, const char* q, int n);
    où n est le nombre de caractères à copier.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par titibete Voir le message
    Prototype strcpy:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* strcpy(char* p, const char* q);
    Tu lui donnes un caractère, donc il râle. A noter qu'en C++, il existe d'autres façons de faire plus élégantes !

    A défaut, tu devrais utiliser strncpy, plus "sécurisé" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* strncpy(char* p, const char* q, int n);
    où n est le nombre de caractères à copier.
    Oui, j'utilise cette fonction dans mes programmes C.
    Il y avait un autre soucie dans la déclaration des propriétés de ma Class, j'ai utilisé char s[] et ca marche.

    Mon programme ca se compliquer de plus en plus, car je veux faire une simulation avec une loi de distribution exponentielle.
    Merci à tous d'avoir apporter votre aide. MErci encore pour les conseils.

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    M'est quand même avis que tu devrais utiliser std::string ; ça serait beaucoup plus simple.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/09/2013, 17h25
  2. Erreur lors du link error LNK2019
    Par teddyalbina dans le forum Langage
    Réponses: 5
    Dernier message: 07/06/2011, 23h03
  3. Erreur : Provider error '80004005'
    Par krfa1 dans le forum ASP
    Réponses: 3
    Dernier message: 23/09/2005, 09h21
  4. Erreur Provider error '80004005'
    Par Samatouk dans le forum ASP
    Réponses: 7
    Dernier message: 11/01/2005, 00h20
  5. Réponses: 4
    Dernier message: 23/04/2004, 16h06

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