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++Builder Discussion :

Erreur de lieur


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Par d�faut Erreur de lieur
    Je sais que c'est tr�s fr�quent ce genre d'erreur mais je ne trouve en ce qui me concerne pourtant j'ai bien cherch�

    Bref mon programme est tout simple, il contient d'une fiche avec un bouton, de deux labels (un qui indique "Home : " et l'autre est dynamique et qui affiche le chemin de la variable d'environnement "HOME" du syst�me)

    En cliquant sur un bouton, je voulais afficher le chemin de "HOME"

    Mais en compilant il m'affiche l'erreur suivant

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [Lieur Erreur] Unresolved external '__fastcall Sysutils::GetEnvironmentVariableA(const System::AnsiString)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
    Je ne vois pas o� est l'erreur???

  2. #2
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Par d�faut
    Bonjour

    Dapres moi la methode
    Sysutils::GetEnvironmentVariableA(...)
    ets declar� dans la classe Sysutils ..mais cette methode nest pas definie dans la .cpp

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Par d�faut
    Voici mon code

    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 <vcl.h>
    #pragma hdrstop
     
    #include "USauveMail.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            Label1->Caption =       "HOME : " + GetEnvironmentVariable("HOME");
    }
    //---------------------------------------------------------------------------
    Pourtant il g�n�re la m�me erreur

  4. #4
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Par d�faut
    Essayez voir :"Construire tous les projets". Sinon je ne vois pas..

  5. #5
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Salut

    C'est bien fourbe comme erreur : si tu regardes le message d'erreur, il porte sur Sysutils::GetEnvironmentVariableA. Le 'A' vient du fait que GetEnvironmentVariable est une fonction d�finie dans windows.h, donc c'est une macro qui renvoie soit sur GetEnvironmentVariableA soit sur GetEnvironmentVariableW selon que tu as activ� l'unicode ou non.

    Donc de deux choses l'une :

    - Soit GetEnvironmentVariable est une fonction red�finie par Borland, auquel cas il faudra soit ne pas inclure windows.h, soit #undef-er GetEnvironmentVariable.

    - Soit tu utilises bien GetEnvironmentVariable de l'API Win32, auquel cas il te manque une biblioth�que dans les options du lieur.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Par d�faut
    Citation Envoy� par DamessS
    Essayez voir :"Construire tous les projets". Sinon je ne vois pas..
    J'ai essay� mais m�me erreur g�n�r�

    Citation Envoy� par Loulou24
    Salut

    C'est bien fourbe comme erreur : si tu regardes le message d'erreur, il porte sur Sysutils::GetEnvironmentVariableA. Le 'A' vient du fait que GetEnvironmentVariable est une fonction d�finie dans windows.h, donc c'est une macro qui renvoie soit sur GetEnvironmentVariableA soit sur GetEnvironmentVariableW selon que tu as activ� l'unicode ou non.
    Oui je l'avais remarqu� cette diff�rence mais sans comprendre donc je te remercie de l'avoir expliqu�...

    Citation Envoy� par Loulou24
    Donc de deux choses l'une :

    - Soit GetEnvironmentVariable est une fonction red�finie par Borland, auquel cas il faudra soit ne pas inclure windows.h, soit #undef-er GetEnvironmentVariable.
    Je n'ai pas trouv� la directive d'inclusion du fichier windows.h...

    J'ai essay� la directive #undef-er GetEnvironmentVariable
    il me met une erreur de syntaxe dans #undef, donc j'ai enlev� -er, la compilation passe mais il m'affiche une autre erreur

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [C++ Erreur] USauveMail.cpp(21): E2268 Appel à une fonction non définie 'GetEnvironmentVariable'
    Alors j'ai essay� d'ajouter 'A' � la suite de GetEnvironmentVariable

    Il me ressort l'erreur de lieur

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [Lieur Erreur] Unresolved external '__fastcall Sysutils::GetEnvironmentVariableA(const System::AnsiString)' referenced from F:\ARAMENERALAMAISON\SAUVEMAIL\USAUVEMAIL.OBJ
    Puis j'ai remplac� 'A' par 'W', il me sort des erreurs de syntaxe

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    [C++ Erreur] USauveMail.cpp(21): E2034 Impossible de convertir 'char *' en 'const wchar_t *'
    [C++ Erreur] USauveMail.cpp(21): E2342 Mauvaise correspondance de type dans le paramètre 'lpName' ('const wchar_t *' désiré, 'char *' obtenu)
    [C++ Erreur] USauveMail.cpp(21): E2193 Trop peu de paramètre dans l'appel à '__stdcall GetEnvironmentVariableW(const wchar_t *,wchar_t *,unsigned long)'

    Alors je n'y comprends pas grand chose

    Citation Envoy� par Loulou24
    - Soit tu utilises bien GetEnvironmentVariable de l'API Win32, auquel cas il te manque une biblioth�que dans les options du lieur.
    Donc je voulais essayer la deuxi�me option mais je ne sais pas quelle biblioth�que rajouter et comment le faire ajouter dans le projet

    Oui je suis un d�butant dans Borland Builder C++

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 4
    Par d�faut
    je sais pas si tu veux tu parles d'une variable environnement que tu initialise toi-m�me... mais bon, je ne crois pas que "home" existe au d�part.

    moi j'ai utilis� la fonction

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    DWORD GetEnvironmentVariable(
     
        LPCTSTR lpName,	// address of environment variable name 
        LPTSTR lpBuffer,	// address of buffer for variable value 
        DWORD nSize 	// size of buffer, in characters 
       );
    donc ceci fonctionne plutot bien.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
       char str[4096];
       AnsiString v;
       if(GetEnvironmentVariable("COMPUTERNAME", str, sizeof(str)))
       {
          v.printf(str);
       }
       Label1->Caption =       "HOME : " + v;
    pour les variables environnement que j'ai trouv�, tu peux aller voir �a :

    http://castelain.developpez.com/arti...ironnement/#L4

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Par d�faut
    Merci qZheneton pour avoir r�solu mon probl�me

    Mais en ce qui concerne la variable d'environnement "HOME", il existe bel et bien dans Windows 2000 et aussi sur Linux

    je vais v�rifier ce soir sur WinXP

    Et encore merci


+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Erreur de lieur sur projet console
    Par Mercusyo dans le forum C++Builder
    R�ponses: 6
    Dernier message: 23/09/2012, 14h49
  2. Erreur de lieur
    Par gandf dans le forum C++Builder
    R�ponses: 4
    Dernier message: 30/08/2011, 19h54
  3. Erreur de lieur
    Par gandf dans le forum C++Builder
    R�ponses: 10
    Dernier message: 30/07/2009, 09h17
  4. Erreur de lieur avec la librairie OpenCV
    Par pasqual dans le forum C++Builder
    R�ponses: 5
    Dernier message: 23/09/2008, 22h28
  5. Erreur de lieur
    Par root508 dans le forum C++Builder
    R�ponses: 4
    Dernier message: 23/06/2007, 23h48

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